Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: ADODB.Recordset in VB

  1. #1
    Utente di HTML.it L'avatar di Gammino
    Registrato dal
    Nov 2001
    Messaggi
    195

    ADODB.Recordset in VB

    Sono veramente abbacchiato...
    Dopo una bella iniezione di fiducia ho deciso di sostituire i controlli Data e ADOData con degli oggetti ADODB.Recordset.

    Tutto bene per le prime prove, ma poi l'incredibie problema:

    Suppooniamo di utilizzare un oggetto objRs As ADODB.Recordset ed aprirlo nell'evento Load del form (fin qui tutto bene).
    Inserisco un controllo textbox nel form (es. Text1), specifico DataField in fase di progettazione (es. PathImg)e non inserisco il DataSource che dovrò assegnare nell'evento Load come objRs.

    Il contenuto di Text1 adesso è il campo PathImg della tabella aperta da objRs, ed infatti MoveNext & company funzionano perfettamente. Aggiungo anche record senza problemi ma...

    Ecco il problema: se (in fase di esecuzione) modifico da tastiera il contenuto della textbox e poi do objRs.Update va tutto bene, ma se modifico via codice Text1.Text, cioè se per es. in Text1_LostFocus metto

    Text1.Text=Left$(Text1.Text,3)

    allora quando passo il metodo Update mi dà errore...

    Sono bloccato con un lavoretto da consegnare, e inizio a rimpiangere il collaudato controllo Data...
    Ci sono giornate in cui mi sembra che il mondo giri al contrario... poi mi sveglio e mi accorgo che purtroppo gira sempre nella stessa direzione: quella sbagliata!
    (Gammino)

  2. #2
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    Prova a forzare l'aggiornamento del campo con objRs.update inserendo questa chiamata in un CommandButton che dovra' essere premuto dall'utente per aggiornare i dati.
    Ciao.
    ...and I miss you...like the deserts miss the rain...

  3. #3
    Utente di HTML.it L'avatar di Gammino
    Registrato dal
    Nov 2001
    Messaggi
    195
    Scusa mi sarò spiegato male! Quando ho scritto "allora quando passo il metodo Update mi dà errore... " intendevo proprio quello.

    Il CommandButton nell'evento click ha proprio objRs.Update e quando clicco mi genera l'errore, solo se il Text di uno dei textbox associati è stato modificato via codice.

    Ho provato anche Me.ValidateControls ma non cambia niente...

    In compenso se, dopo la modifica via codice, clicco su un altro textbox, poi riclicco sul textbox iniziale e per ultimo clicco sul command allora tutto funziona!

    Misteri del VB...
    Ci sono giornate in cui mi sembra che il mondo giri al contrario... poi mi sveglio e mi accorgo che purtroppo gira sempre nella stessa direzione: quella sbagliata!
    (Gammino)

  4. #4
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    Che errore ti visualizza?

    Con i controlli associati a dati, a volte ci sono dei problemi, soprattutto se la fonte dati non e' una DataControl ma un RecordSet creato via codice.

    Ho l'impressione che la gestione dell'associazione dei dati a ciascun campo collegato ad un controllo, passi attraverso l'evento KeyPress (o KeyDown) del controllo stesso:

    se fai un'assegnazione alla proprieta' Text (in questo caso) via codice senza passare attraverso uno di quei due eventi, a volte hai dei problemi in fase di memorizzazione.

    Hai provato ad assegnare il valore direttamente al campo e non alla prop. text che poi la "invia" al campo?

    Al limite puoi fare una funzioncina che prenda i valori dai vari TextBox e li assegni ai vari campi per poi salvarli.

    Forse e' addirittura piu' comodo.

    E poi, personalmente, sono restio ad usare troppi "automatismi": non si capisce mai bene xke' funzionano o (peggio) xke' funzionano IN ALCUNI CASI.
    Ciao.
    ...and I miss you...like the deserts miss the rain...

  5. #5
    Utente di HTML.it L'avatar di Gammino
    Registrato dal
    Nov 2001
    Messaggi
    195
    No, dai von! Non c'è da arrendersi o demoralizzarsi...

    I bachi nascono insieme ai programmi (chi meglio di noi lo sa!) compreso VB6, ma una volta che li sgami e li capisci, li eviti...

    Comunque avevo pensato a passare direttamente il text al campo, ma ho circa 30 campi... diventerei scemo di codice!

    E poi oh... E' IL COMPUTER CHE DEVE FARE QUELLO CHE VOGLIO IO e non il contrario! :zamm:

    E poi (bis) se non lo risolvo non dormo più :gren: :gren: :gren: !
    Ci sono giornate in cui mi sembra che il mondo giri al contrario... poi mi sveglio e mi accorgo che purtroppo gira sempre nella stessa direzione: quella sbagliata!
    (Gammino)

  6. #6
    Utente di HTML.it L'avatar di Gammino
    Registrato dal
    Nov 2001
    Messaggi
    195

    Dimenticavo...

    Volevo chiederti una cosa:
    Ricordi che ho scritto che se dopo l'evento lostfocus del textbox io clicco su un'altro controllo, poi clicco sul textbox incriminato qualcosa succede perchè così il commandbutton aggiorna il Recordset senza errori.

    Secondo che cavolo succede di così fondamentale quando io torno a cliccare sul text box?

    Sembra quasi che vada a convalidare il campo, ma non è vero.

    Forse l'oggetto Recordset riassocia il campo...

    P.S. Tu cosa usi per accedere ai dati in un db?
    Ci sono giornate in cui mi sembra che il mondo giri al contrario... poi mi sveglio e mi accorgo che purtroppo gira sempre nella stessa direzione: quella sbagliata!
    (Gammino)

  7. #7
    Utente di HTML.it L'avatar di Gammino
    Registrato dal
    Nov 2001
    Messaggi
    195
    Qualcuno ha già incontrato questo problema?
    Ci sono giornate in cui mi sembra che il mondo giri al contrario... poi mi sveglio e mi accorgo che purtroppo gira sempre nella stessa direzione: quella sbagliata!
    (Gammino)

  8. #8
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    se possibile fai una cosa:
    Posta il codice che ti da errore ed anche il messaggio di errore

    Ciao

  9. #9
    Utente di HTML.it L'avatar di Gammino
    Registrato dal
    Nov 2001
    Messaggi
    195
    dammi 2 minuti...
    Ci sono giornate in cui mi sembra che il mondo giri al contrario... poi mi sveglio e mi accorgo che purtroppo gira sempre nella stessa direzione: quella sbagliata!
    (Gammino)

  10. #10
    Utente di HTML.it L'avatar di Gammino
    Registrato dal
    Nov 2001
    Messaggi
    195
    Tra i vari controlli (ininfluenti) sul form ho un CommandButton cmdConferma ed un'array textBox txtDati il cui elemento 3 deve contenere un path.
    Quando viene inserito il path, se ha il backslash (\) finale, lo tolgo via codice.
    Quando passo il metodo Update mi dà errore...


    codice:
    Option Explicit
    Dim objConn As ADODB.Connection, objRs As ADODB.Recordset
    Dim strSoggetto As String, strSoggetti As String
    
    Private Sub cmdConferma_Click()
        objRs.Update
    End Sub
    
    Private Sub Form_Load()
    Dim ctrDati As Control
        Open_Rs objConn, objRs, varAppPath & "\multi.mdb", "Select * from Profili"
        strSoggetto = "profilo"
        strSoggetti = "profili"
    
        For Each ctrDati In txtDati
            Set ctrDati.DataSource = objRs
        Next
    End Sub
    
    Private Sub txtDati_LostFocus(Index As Integer)
    Select Case Index
        Case 3
            If Right(txtDati(Index), 1) = "\" Then txtDati(Index).Text = Left$(txtDati(Index).Text, Len(txtDati(Index).Text) - 1)
    End Select
    End Sub
    Ci sono giornate in cui mi sembra che il mondo giri al contrario... poi mi sveglio e mi accorgo che purtroppo gira sempre nella stessa direzione: quella sbagliata!
    (Gammino)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.