+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

CheckBox

  1. #1
    L'avatar di cippalippa
    cippalippa non  in linea Topo di biblioteca
    Ciao,
    sto provando a connettere delle checkbox di una form alle relative checkbox di un db sia per caricare i dati che per rimandarli ad db.
    Non so come fare e non ho trovato istruzioni al riguardo.
    Ho provato con:

    set check1.datasource = rs.fields
    rs.fields = set check1.datasource

    ma non funziona (mi d errore).
    Il codice:

    check1.value = rs.fields
    rs.fields = check1.value

    ha funzionato solo rimandando i dati dalla form al db, non leggendoli da esso.
    Qualcuno pu aiutarmi?

  2. #2
    L'avatar di TheTruster
    TheTruster non  in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    non capisco il senso delle assegnazioni da te fatte....

    alla proprietà DataSource del CheckBox, devi assegnare il recordset.
    alla proprietà DataField del CheckBox, devi assegnare il campo cui vuoi che sia collegato.

    Set Check1.DataSource = rs
    Check1.DataField = rs.Fields("TuoCampo").Name
    
    non occorre fare altro...

    TheTruster
    ℹ️ Leggi di pi su TheTruster ...

  3. #3
    L'avatar di cippalippa
    cippalippa non  in linea Topo di biblioteca
    Grazie,
    almeno questo l'ho capito.
    E per rimandare indietro l'informazione al db cosa devo scrivere?
    Presumo:

    rs.Fields("TuoCampo") = Check1.DataField

    (quelli che hai visto erano tentativi, visto che non ho trovato nulla al rigurdo).
    Per quanto riguarda l'incompletezza del codice davo per scontato che voi avreste capito anche le omissioni...

  4. #4
    L'avatar di TheTruster
    TheTruster non  in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    non devi dare nulla "di ritorno" al db!
    se il checkbox, come qualsiasi altro controllo, è collegato al campo, funziona sia in lettura che in modifica... devi solo fare l'Update del recordset se vuoi accettare le modifiche o il CancelUpdate, se invece vuoi annullarle.

    TheTruster
    ℹ️ Leggi di pi su TheTruster ...

  5. #5
    L'avatar di cippalippa
    cippalippa non  in linea Topo di biblioteca
    Ma come?!?
    Io finora ho sempre scritto un codice che prendeva dei valori e poi un codice che lo rimandava indietro (nel caso di modifiche).
    Era praticamante lo stesso solo invertito di posizione!
    Praticamante ho sbagliato tutto?
    Per mi ricordo che con le textbox se non facevo cos i dati non si aggiornavano.
    Grazie ancora e ciao.

  6. #6
    L'avatar di TheTruster
    TheTruster non  in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    una volta aperta connessione e recordset, se i campi sono collegati tramite DataSource e DataField non devi fare nessuna operazione per "tirare fuori" i dati dal DB.

    le operazioni di cui parli, ovvero recupero dati dal db, e successiva riassegnazione dopo le modifiche, sono necessarie quando non vi è nessun collegamento tra i campi del Form e il recordset tramite DataSource e DataField.

    ti ripeto: quando colleghi i campi nella maniera in cui ti ho descritto, devi solo fare l'update nel caso i dati vengano modificati.

    io generalmente non uso il collegamento diretto al DB, poichè questo non mi da il controllo assoluto di cosa viene modificato, ma se lo faccio predispongo una routine di "blocco" e "sblocco" dei campi, a seconda che si stia in visualizzazione o in modifica.

    se poi ai campi sul form dai lo stesso nome dei campi del DB puoi fare un collegamento tra di essi utilizzando solo una semplice routine che consiste in un ciclo For Each...

    TheTruster
    ℹ️ Leggi di pi su TheTruster ...

  7. #7
    L'avatar di cippalippa
    cippalippa non  in linea Topo di biblioteca
    Ciao,
    ci ho provato, ma non funziona.
    Non riesco proprio a capire cosa manchi.
    Ho fatto la connessione e dichiarato e aperto il rs, poi ho inserito la tua stringa ma mi ha dato errore di runtime 545 (fra l'altro non sono nemmeno riuscito a trovare informazioni su quest'errore).
    Allora ho provato a connettermi con una textbox invece che con la check, ma il risultato è lo stesso:
    "impossibile associare al campo o al datamember X".

    P.S. cn e rs sono creati correttamente e funzionano, li ho controllati.

    Altrimenti, un altro sistema che non utilizzi datasource e datafield sai se esiste?

    La routine for/each la conosco, vedo che la usa la creazione guidata dati, ma lì viene usata con un array di caselle. Come è nel caso di nomi diversi?
    Ultima modifica di cippalippa; 07-03-2006 18:47 

  8. #8
    L'avatar di TheTruster
    TheTruster non  in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    ok... esempio pratico:

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    
    Private Sub Form_Load()
    
    Dim NomeDB As String
    NomeDB = "C:\TuaCartella\TuoDB.mdb"
    
    Set cn = New ADODB.Connection
    cn.CursorLocation = adUseClient
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & NomeDB
    
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open "SELECT Campo1, Campo2 FROM Tabella1", cn, adOpenDynamic, adLockOptimistic, adCmdText
    
    Set Text1.DataSource = rs
    Text1.DataField = "Campo1"
    
    Set Check1.DataSource = rs
    Check1.DataField = "Campo2"
    
    End Sub
    
    l'esempio usa un TextBox e un CheckBox....

    come ti dicevo, anzichè fare le singole associazioni, è possibile realizzare una semplice routine che colleghi dinamicamente i vari campi del Form ai campi del DB... basta un ciclo For Each...

    TheTruster
    ℹ️ Leggi di pi su TheTruster ...

  9. #9
    L'avatar di cippalippa
    cippalippa non  in linea Topo di biblioteca
    Ciao,
    l'ho provato, funziona.
    Ho anche capito cosa generava l'errore di cui ti parlavo:

    Check1.DataField = "Campo1" corretta
    Check1.DataField = rs.Fields("TuoCampo") errore

    Potenzialmente il sistema per le textbox è bellino e comodo, però crea il problema dei campi di lunghezza 0 se cancelli il campo, allora devi scrivere il codice per correggere l'errore e quindi sei punto e a capo.
    Sarebbe stato bello se fosse stato tutto automatico.
    Grazie ancora, sei un mago!

  10. #10
    L'avatar di TheTruster
    TheTruster non  in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Quote Originariamente inviato da cippalippa
    se cancelli il campo, allora devi scrivere il codice per correggere l'errore e quindi sei punto e a capo.
    Sarebbe stato bello se fosse stato tutto automatico.
    Grazie ancora, sei un mago!
    ripeto che il sistema c':
    Quote Originariamente inviato da cippalippa
    anzich fare le singole associazioni, possibile realizzare una semplice routine che colleghi dinamicamente i vari campi del Form ai campi del DB... basta un ciclo For Each...
    se ai campi del form dai lo stesso nome dei campi del DB pi un prefisso di 3 lettere che idintifica il tipo di controllo, qusto potrebbe essere un esempio:

    Campi DB:
    Cognome | Nome | DataNascita | Sposato

    Campi Form:
    txtCognome | txtNome | txtDataNascita | chkSposato

    Sub CollegaCampi()
    Dim ctrl As Control
    For Each ctrl in Me.Controls
        If TypeOf ctrl Is TextBox Or TypeOf Ctrl Is CheckBox Then
            Set ctrl.DataSource = rs
                ctrl.DataField = Mid(ctrl.Name, 4)
        End If
    Next ctrl
    End Sub
    
    questa routine dovrebbe funzionare per un numero qualsiasi di TextBox e CheckBox.
    per collegare altri tipi di controlli, basta aggiungerli nella condizione.

    TheTruster
    ℹ️ Leggi di pi su TheTruster ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 7
    Ultimo Post: 22-03-2011, 08:47
  2. CheckBox
    Da gmac nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 03-02-2011, 23:50
  3. Risposte: 4
    Ultimo Post: 19-10-2009, 23:00
  4. Checkbox Value
    Da cippalippa nel forum Visual Basic .Net
    Risposte: 5
    Ultimo Post: 26-07-2007, 22:18
  5. CheckBox
    Da Alias nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 16-05-2005, 15:02