Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    VB6 e DB ACCESS INSERT INTO non funzona

    Ciao Amici,

    sapete dirmi perchè mi da Run-time error 424 Object required???


    Private Sub Command2_Click()
    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim ssql As String

    'Istanza di connesisone
    Set conn = New ADODB.Connection
    conn.ConnectionTimeout = 100
    conn.Provider = "Microsoft.Jet.OLEDB.4.0"
    conn.ConnectionString = "Data Source= D:\pippo.mdb;User ID=Admin;Password=;Jet OLEDBatabase Locking Mode=1;"
    conn.ConnectionTimeout = 60
    conn.Mode = adModeReadWrite
    conn.CursorLocation = adUseServer
    conn.Open


    ssql = "INSERT INTO RFID(TAG1, TAG2, TAG3, TAG4, TAG5) VALUES('" & Text2.Text & "', 1, 0, 0, 0,)"
    conn.Execute (ssql)


    End Sub


  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: VB6 e DB ACCESS INSERT INTO non funzona

    Originariamente inviato da Maestro76
    Ciao Amici,

    sapete dirmi perchè mi da Run-time error 424 Object required???
    Intanto, perchè fai due volte la new della connection e istanzi un recordset che non usi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    A parte che avresti dovuto indicare la riga che genera l'errore...

    Sospetto che il problema derivi da queste due istruzioni:

    codice:
    Dim conn As New ADODB.Connection
    Set conn = New ADODB.Connection
    perchè la dichiarazione:
    codice:
    Dim conn As New ADODB.Connection
    con creazione dell'istanza implicita è sbagliata ed è parte di un vecchio retaggio che, purtroppo, si legge ancora troppo spesso in codice 'vecchio come cucco' usato ed abusato.
    Una volta poteva aver ragione di esistere, ora non più perchè dall'MDAC v.2.6 le cose sono cambiate, e con la v.2.8 ancora di più.


    Dovresti invece dichiarare ed istanziare l'oggetto separatamente, così:
    codice:
    Dim conn As ADODB.Connection
    Set conn = New ADODB.Connection
    Stessa cosa vale per il Recordset:
    codice:
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset

    Poi, giusto per pignoleria, questo codice è praticamente inutile:
    1.
    codice:
    User ID=Admin;Password=;
    serve solo in ambiente MSAccess, mentre tu lavori in VB6 e non ha alcuna utilità.

    2.
    codice:
    conn.CursorLocation = adUseServer
    Il cursore è già per default lato server, perchè indicarlo?


    3.
    L'Execute dovrebbe essere eseguito all'interno di una transazione BeginTrans/ComminTrans in cui deve essere previstra la relativa gestione dell'errore (e conseguente RollBackTrans).

    4.
    Tutto il codice dovrebbe essere eseguito all'interno di una funzione che restituisce un valore in base al successo o meno dell'operazione.

    Mettiamo che la INSERT non abbia successo.
    Tu come fai a scoprirlo?
    Il tuo codice non ti segnalerebbe niente di niente...

    5.
    Poi ci sarebbe altro... ma mi fermo qui.


  4. #4
    Ho pulito il codice in eccesso e variato
    secondo le tue indicazioni.

    Ora funziona tutto.

    Grazie mille per l'aiuto

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da Maestro76
    Ho pulito il codice in eccesso e variato
    secondo le tue indicazioni.

    Ora funziona tutto.

    Grazie mille per l'aiuto
    Prego.

    Magari se mostri il tuo nuovo codice, può essere d'aiuto ad altri...


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 © 2025 vBulletin Solutions, Inc. All rights reserved.