Oppure

Loading
17/02/08 20:21
gabryk
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ì:
    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ì.
aaa
17/02/08 20:46
gantonio
Postato originariamente da gabryk:
Bella domanda! Boh!?

Come boh ! E se non lo sai tu !

... 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...


Ovviamente ... per farlo devi eseguire il metodo che gestisce il recordset ovvero

Adodc1.Recordset.MoveNext

per andare avanti, MovePrevious per andare indietro, MoveFirst per il primo record e MoveLast per l'ultimo record ...

Se provo a dirgli adodc1.recordset.movenext non succede niente, così:

Adodc1.Recordset.MoveNext


Ma questa istruzione quando la fai eseguire?

Se utilizzi i pulsanti del controllo adodc, i record vengono visualizzati?
Ultima modifica effettuata da gantonio 17/02/08 21:01
aaa
17/02/08 21:59
gabryk
Con questo codice nel form load creo le textbox e le associo all'adodc1:
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


Per completezza di informazione: vengono anche create delle label sempre a runtime in cui viene scritto il nome del campo.

Ora che comando dovrei dare ad un commandbutton per spostarmi avanti o indietro tra i record e quindi cambiare il contenuto di tutte le textbox?
Avevo provato con una cosa tipo questa, ma non funziona:
    Adodc1.Recordset.MoveNext
    
    i = 0
    Do Until i >= colonne
        
        Text1(i).DataField = Adodc1.Recordset.Fields(i).Name
    i = i + 1
    Loop

aaa
17/02/08 22:28
gantonio
Hai inutilmente riproposto il codice che gia' avevi mostrato ma non hai risposto alla mia domanda ...

... se usi i tasti del controllo adodc, ti sposti tra i record?
aaa
18/02/08 8:23
gabryk
No, le textbox non cambiano ovviamente, perchè è il preciso motivo per cui vi sto chiedendo consiglio.
Quello che cambia è la selezione del record nella datagrid, lì vedo la freccetta nera spostarsi in alto o in basso.
Ora vorrei che le textbox si aggiornassero di conseguenza col record selezionato nella datagrid.
aaa
18/02/08 14:16
gantonio
Ah ... ora mi e' piu' chiaro il problema ...

In realta' mi sa che non puoi farlo dinamicamente perche' dovresti assegnare la proprieta' DataSource ai vari controlli e questo non lo puoi fare a runtime ...
aaa