Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Cambiare datafield a runtime
Forum - Visual Basic 6 - Cambiare datafield a runtime

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
gabryk (Normal User)
Rookie


Messaggi: 24
Iscritto: 04/10/2006

Segnala al moderatore
Postato alle 10:18
Domenica, 17/02/2008
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 :asd:


[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
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 11:53
Domenica, 17/02/2008
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!:rotfl:

PM Quote
Avatar
gabryk (Normal User)
Rookie


Messaggi: 24
Iscritto: 04/10/2006

Segnala al moderatore
Postato alle 13:08
Domenica, 17/02/2008
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

  1. colonne = DataGrid1.Columns.Count
  2.        
  3.     righe = 1
  4.     While Adodc1.Recordset.EOF = False
  5.         righe = righe + 1
  6.         Adodc1.Recordset.MoveNext
  7.     Wend
  8.    
  9.     Adodc1.Recordset.MoveFirst
  10.  
  11.     i = 1
  12.     Do Until i >= colonne
  13.         Load Text1(i)
  14.         Text1(i).Top = Text1(i - 1).Top + Text1(i - 1).Height + 50
  15.         Text1(i).Visible = True
  16.         Text1(i).DataField = Adodc1.Recordset.Fields(i).Name
  17.         Load Label1(i)
  18.         Label1(i).Top = Label1(i - 1).Top + Label1(i - 1).Height + 50
  19.         Label1(i).Visible = True
  20.         Label1(i).Caption = Adodc1.Recordset.Fields(i).Name
  21.     i = i + 1
  22.     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...

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 16:09
Domenica, 17/02/2008
io non ti posso aiutare, con i database nn ci ho ankora mai lavorato... :s

aspetta qualkuno + esperto...

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 16:21
Domenica, 17/02/2008
Come hai collegato i vari oggetti? (Adodc, griglia ...)

PM Quote
Avatar
gabryk (Normal User)
Rookie


Messaggi: 24
Iscritto: 04/10/2006

Segnala al moderatore
Postato alle 16:39
Domenica, 17/02/2008
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

  1. 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
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 17:26
Domenica, 17/02/2008
Tu dici che vorresti cambiare riga ... come vorresti farlo?

PM Quote
Avatar
Shutdown (Founder Member)
Guru


Messaggi: 1212
Iscritto: 10/09/2005

Segnala al moderatore
Postato alle 17:35
Domenica, 17/02/2008
Testo quotato

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!:rotfl:



Esatto... Ha ragione!

PM Quote
Avatar
gabryk (Normal User)
Rookie


Messaggi: 24
Iscritto: 04/10/2006

Segnala al moderatore
Postato alle 21:21
Domenica, 17/02/2008
Testo quotato

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

  1. Adodc1.Recordset.MoveNext
  2.    
  3.     i = 0
  4.     Do Until i >= colonne
  5.        
  6.         Text1(i).DataField = Adodc1.Recordset.Fields(i).Name
  7.     i = i + 1
  8.     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ì.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo