gabryk (Normal User)
Rookie
Messaggi: 24
Iscritto: 04/10/2006
|
Preciso subito che in teoria so come si fa, dovrebbe bastare qualcosa del genere:
Text1(i).DataField = "Cognome"
Il mio problema è che questa sintassi è "chiusa" e prevede che si conosca in anticipo il nome del campo, io invece voglio che la sintassi si basi sul numero del campo piuttosto che sul nome.
Deve fare questo: leggere quante righe ci sono nella tabella, creare a runtime un egual numero di textbox, associare sempre a runtime un datafield progressivo alle textbox, che sarà quindi un int, tipo i in un Loop.
Come posso fare? Grazie mille
-------------------------------
Ho visto che potrebbe fare a caso mio la proprietà fields del recordset, però con una sintassi tipo questa:
Text1(i).DataField = Personaggio.Recordset.Fields(i)
mi da "errore variabile oggetto o variabile with non impostata". Non ho dichiarato il db via codice ma l'ho impostato su un controllo Data.
--------------------------------
RISOLTO!
Così:
Text1(i).DataField = rs.Fields(i).Name
Scusate se ho parlato da solo
[edit] usate il pulsante EDIT per modificare... Non postate nuovi messaggi per aggiungere dettagli o frasi... [/edit]
Ultima modifica effettuata da Shutdown il 17/02/2008 alle 17:33 |
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
sono contento ke hai risolto...
p.s. sei stato bravo a risolvere il problema da solo cmq ora mi sa ke il moderatore ti modifikerà o cancellerà i post, perchè 3 post di fila non si possono fare, magari potevi usare edit cioè potevi modifikare il tuo primo post...
Fallo prima ke il moderatore se ne accorge!
|
|
gabryk (Normal User)
Rookie
Messaggi: 24
Iscritto: 04/10/2006
|
Perdonatemi, ho dimenticato per un attimo le regole del forum. Comunque, ho totalmente cambiato strada rispetto a quello che stavo facendo prima, ora uso un controllo Adodc e un Datagrid in cui caricare il db.
Riesco a creare a runtime le textbox a seconda del numero di colonne nella tabella, quindi questo punto è ok. Il problema ora è che non riesco a muovermi nel database. Vorrei fare i classici pulsanti per spostarsi avanti e indietro tra le righe del db (i record), e di conseguenza tutti i valori delle textbox dovrebbero cambiare con quelli della nuova riga... non ci riesco!
Questo è quello che ho:
Codice sorgente - presumibilmente VB.NET |
colonne = DataGrid1.Columns.Count righe = 1 While Adodc1.Recordset.EOF = False righe = righe + 1 Adodc1.Recordset.MoveNext Wend Adodc1.Recordset.MoveFirst i = 1 Do Until i >= colonne Load Text1(i) Text1(i).Top = Text1(i - 1).Top + Text1(i - 1).Height + 50 Text1(i).Visible = True Text1(i).DataField = Adodc1.Recordset.Fields(i).Name Load Label1(i) Label1(i).Top = Label1(i - 1).Top + Label1(i - 1).Height + 50 Label1(i).Visible = True Label1(i).Caption = Adodc1.Recordset.Fields(i).Name i = i + 1 Loop
|
Intanto nelle textbox mi trovo i valori dell'ultima riga e non della prima, poi come dicevo non riesco a fargli cambiare riga e aggiornare le textbox di conseguenza... come posso fare? Grazie e scusate per i tre post di fila...
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
io non ti posso aiutare, con i database nn ci ho ankora mai lavorato... :s
aspetta qualkuno + esperto...
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Come hai collegato i vari oggetti? (Adodc, griglia ...)
|
|
gabryk (Normal User)
Rookie
Messaggi: 24
Iscritto: 04/10/2006
|
Ho impostato la stringa di connessione al db nell'oggetto adodc1 e nella prima textbox (con indice 0) ho messo datasource adodc1 e datafield "Nome" che è la prima colonna. Le altre textbox vengono farcite a runtime con
Codice sorgente - presumibilmente Plain Text |
Text1(i).DataField = Adodc1.Recordset.Fields(i).Name
|
e la datagrid1 è collegata ad adodc sempre tramite datasource direttamente nelle proprietà dell'oggetto.
Non ho fatto alcuna dichiarazione via codice per aprire o gestire il database, speravo si potesse fare tutto con i metodi di questi oggetti.
Ultima modifica effettuata da gabryk il 17/02/2008 alle 16:42 |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Tu dici che vorresti cambiare riga ... come vorresti farlo?
|
|
Shutdown (Founder Member)
Guru
Messaggi: 1212
Iscritto: 10/09/2005
|
Postato originariamente da GrG:
sono contento ke hai risolto...
p.s. sei stato bravo a risolvere il problema da solo cmq ora mi sa ke il moderatore ti modifikerà o cancellerà i post, perchè 3 post di fila non si possono fare, magari potevi usare edit cioè potevi modifikare il tuo primo post...
Fallo prima ke il moderatore se ne accorge! |
Esatto... Ha ragione! |
|
gabryk (Normal User)
Rookie
Messaggi: 24
Iscritto: 04/10/2006
|
Postato originariamente da gantonio:
Tu dici che vorresti cambiare riga ... come vorresti farlo? |
Bella domanda! Boh!?
Cioè il database è composto da tante colonne, 27 per la precisione e sono del tipo Nome, Cognome, etc etc ma anche da tante righe, diciamo da 1 a infinito. Per caricare tutte le colonne in apposite textbox nessun problema, dando ad ogni textbox un datasource a runtime indicando il numero di colonna anzichè il nome, però poi vorrei fare in modo da poter cambiare anche riga e quindi i campi Nome, Cognome etc devono cambiare e così anche le textbox...
Se provo a dirgli adodc1.recordset.movenext non succede niente, così:
Codice sorgente - presumibilmente Visual Basic 6 |
Adodc1.Recordset.MoveNext
i = 0
Do Until i >= colonne
Text1(i).DataField = Adodc1.Recordset.Fields(i).Name
i = i + 1
Loop
|
Nelle textbox ci sono sempre i valori dell'ultima riga inserita nel db, come se ogni volta pescasse tutti i dati dall'inizio alla fine delle righe e arrivato in fondo si fermasse lì. |
|