Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [VB6] Codice condiviso

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    99

    [VB6] Codice condiviso

    Salve a tutti.
    Sto sviluppando una applicazione che sfrutta un database access per cui ogni qual volta che devo interrogare il database apro la connessione. La domanda è: esiste un modo per condividere il codice necessario per l'apertura della connessione al database? Mi hanno detto di usare i moduli ma quando lo richiamo con la funzione call e poi provo a fare la query mi da errore cosa che invece non mi da se il codice per la connessione lo scrivo direttamente nel form dove eseguo la query.

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117

    Re: [VB6] Codice condiviso

    Originariamente inviato da Amok
    usare i moduli ma quando lo richiamo con la funzione call e poi provo a fare la query mi da errore cosa che invece non mi da se il codice per la connessione lo scrivo direttamente nel form dove eseguo la query.
    Ciao ! nel modulo hai indicato come Public sia il DB che l'eventuale Recordset ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    99
    codice:
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Public Sub database()
    Set rs = New ADODB.Recordset
    Const id As Long = "1"
    cn.CursorLocation = adUseClient
    cn.ConnectionTimeout = 30
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "/database.mdb"
    cn.Open
    End Sub
    Questo è l'intero codice del mio modulo

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Originariamente inviato da Amok
    codice:
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Questo è l'intero codice del mio modulo
    Ciao, dovrebbe essere sufficiente dichiararli Public, in quanto devono essere visti da un form.....

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    99
    Ho provato ma mi da sempre lo stesso errore "Necessario oggetto"

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset

    sei sicuro che cn rs non si trovino anche definiti nel form ?
    non ho capito l'uso della costante ID

    Ciao !

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Fai in questo modo:
    In un Modulo bas Scrivi:
    codice:
    Public Sub DataConnessione2()
     
     ' Stringa di connessione senza password:
        'DataConnessione = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\MyDataBase.mdb;Persist Security Info=False;"
        
        DataConnessione = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\MyDataBase.mdb;Jet OLEDB:Database Password=MyPS;"
    Nello stesso modulo in Generale - Dichiarazioni, dichiara una variabile pubblica:
    codice:
    Public DataConnessione As String
    Poi per fare una select:
    codice:
    Public Sub SalvaDBAnagPr()
        
        Dim Ogg1 As New ADODB.Command
        Dim Cns1 As New ADODB.Connection
        Dim RSTctr As New ADODB.Recordset
    
        'Esegue la connessione con il DataBase Tbl...:
            With Cns1
                .ConnectionString = DataConnessione
                .CursorLocation = adUseClient   'tipo di cursore
                .Mode = adModeShareDenyNone     'nessuna limitazione
                .CommandTimeout = 15
                .Open
            End With
        
        
            RSTctr.Source = "SELECT Nome, Cognome, NomeFile FROM TblAnagrafica WHERE Nome='" & FrmAnag.TxtPr1.Text & "' And Cognome='" & FrmAnag.TxtPr2.Text & "' And  NomeFile= '" & NomeNF & "'"
    RSTctr.Open , Cns1
    ... ... 
    ' Chiude la connessione:
            Cns1.Close
            Set Cns1 = Nothing
    'Chiude e cancella il recordSet:
            Set RSTctr = Nothing
            RSTctr.Close
    
    End Sub
    Per fare un Insert:
    codice:
    Public Sub SalvaSintesiDB()
        On Error Resume Next
    
        'Inserimento dei dati nel DB:
        Dim OggS As New ADODB.Command
        Dim ConS As New ADODB.Connection
     
     'Esegue la connessione con il DataBase:
            With ConS
                .ConnectionString = DataConnessione
                .CursorLocation = adUseClient   'tipo di cursore
                .Mode = adModeShareDenyNone     'nessuna limitazione
                .CommandTimeout = 15
                .Open
           End With
           
            OggS.ActiveConnection = ConS
            OggS.CommandType = adCmdText
    
    ' Solo se usi Tbl temporanee
    'Prima di salvare Elimina i vecchi records dalla tabella:
            'OggS.CommandText = "Delete * From TblSin"
            'OggS.Execute
    
            OggS.CommandText = "insert into TblSint(VoceN, Sint, UnitMis, Qta, PrUn, PrTot, PrProg)" _
            & "values ('" & Ctr(FrmCo.Txt15(0).Text) & "', '" & Replace(strSint0, "'", "''") & "',  '" & (FrmCo.Txt10(0).Text) & "',  '" & Ctr(FrmCo.Txt11(0).Text) & "', '" & Ctr(FrmCo.Txt12(0).Text) & "', '" & Ctr(FrmCo.Txt13(0).Text) & "', '" & Ctr(FrmC.Txt14(0).Text) & "');"
            OggS.Execute
    ... ...
    'Chiude la connessione - TblSint:
            ConS.Close
            Set ConS = Nothing
    End Sub
    Spero che l'esempio sia chiaro.
    LM

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    99
    Voglio ringraziare LMondi e Pierabo che con i loro esempi e le loro spiegazioni mi hanno aiutato a risolvere il problema.
    Predendo spunto da entrambi ho risolto cosi e funziona.
    In modulo ho scritto questo

    codice:
    Public cn As New ADODB.Connection
    Public rs As New ADODB.Recordset
    Public Sub database()
    Set rs = New ADODB.Recordset
    cn.CursorLocation = adUseClient
    cn.ConnectionTimeout = 30
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "/database.mdb"
    cn.Open
    End Sub
    Grazie ancora

  9. #9
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Amok,
    naturalmente prima di tutto devi istanziare (attivare) l'oggetto in: Progetto>Riferimenti Microsoft ActiveX Data Objects 2.8 library. Vedo che NON serve perchè hai risolto
    LM

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.