Gestione DB accd ACCESS da visual studio 2022 64bit

di il
16 risposte

16 Risposte - Pagina 2

  • Re: Gestione DB accd ACCESS da visual studio 2022 64bit

    Non sono amministratore, non ho "additato" nessuno e a questo punto sono d'accordo solo su un punto, non ti rispondo più per non perdere il mio e il tuo tempo.  

    Qualcun altro risponderà a tutte le tue domande e risolverà tutti i tuoi problemi.

  • Re: Gestione DB accd ACCESS da visual studio 2022 64bit

    22/01/2024 - Sparvy ha scritto:


    SIg.ri buona sera,

    dal titolo già si può intuire di cosa avrei bisogno.

    ho creato un progetto winodws form in .net 6 e ora vorrei agganciare e gestire un db access dal suo interno.

    Vorrei sapere se esiste un modo di riprodurre in visual studio .net 6 il solito codice access  da me sempre utilizzato:

    Module Module1
    
        Dim cn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\visconti\Desktop\Ambtest\DatiProgManutArchivio2.accdb")
        Public dr As OleDb.OleDbDataReader
        Sub main()
            On Error GoTo er
    
    
            '*************************Compact DB dati
            Dim hjk As String, fv, aggmesi, aggmesi2, Devz, mail2, mailr
            Dim Acc As Object, myfile, percdb, mail, mailcc, dbpath, dbpathx, cuba, cuba2, logcomp, name, aggiornamesi
            aggiornamesi = ""
            Dim cm As New OleDb.OleDbCommand("select * form mesi where YEAR(DATA)=" & Year(Now()))
    2:     
    25:     percdb = dlookup("valore", "parametri", "paramconfig='percsoftw'")
            MsgBox(percdb)
            Exit Sub
    .
    .
    .
    

    Mi sapreste dire quali riferimenti o spazio nomi dovrei importare in visual studio (64bit) per poter utilizzare il codice  che ho sempre utilizzato col vecchio visual studio 2012 e .net framework 4.5? 

    Puoi usare Oledb, anche io ho fatto diversi progetti in VBA e poi sono passato a Vbnet e SqlServer e posso dirti di aver implementato funzoni/comando cui ero tanto affezionato tipo quelli che hai citato tipo quello che segue.

    Ti basta creare un modulo ed inserire i comandi come quelli che ti elenco per trovarti le righe di codice VBA utilizzabili al volo

    ricorda che per leggere db access64 bit devi impostare in vbnet compilaizone la cpu di destinazione come: AnyCPU o x64

    Imports System.Data.OleDb
    
    
    Module Module1
        Public ConndbLoc As New OleDbConnection
        Public ConnLoc as String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Articoli2.accdb;Persist Security Info=False;"
    	
    	''' <summary>
        ''' legge il db access  
        ''' </summary>
        ''' <param name="Campo">il campo della tabella o lunione di più campi</param>
        ''' <param name="Tabella">Il nome della Tabella da leggere</param>
        ''' <param name="Condizione">La condizione lettura</param>
        ''' <returns></returns>
        Public Function Dlookup(ByVal Campo As String, ByVal Tabella As String,
                                Optional ByVal Condizione As String = Nothing) As String
            Dim strRead As String
            Dim AdoCmd As New OleDbCommand
            Dim AdoRead As OleDbDataReader
    
            If ConndbLoc.State = ConnectionState.Closed Then
                ConndbLoc.ConnectionString = ConnLoc
                ConndbLoc.Open()
            End If
            Try
                AdoCmd.Connection = ConndbLoc
                strRead = "SELECT " & Campo & " FROM " & Tabella & " WHERE 1=1  " & IIf(Nz(Condizione, "") > "", " And " & Condizione, "")
                AdoCmd.CommandText = strRead
                AdoRead = AdoCmd.ExecuteReader()
                AdoRead.Read()
                Dlookup2 = AdoRead.Item(0)
                AdoRead.Close()
            Catch ex As Exception
                Dlookup2 = Nothing
            Finally
            End Try
        End Function
        
        ''' <summary>
        ''' Esegue Query di comando
        ''' </summary>
    
        ''' <param name="StrSql">La query di comando</param>
        ''' <param name="TornaKey">Se true ritorna l'id autoincrementale dell'ultimo record inserito</param>
        ''' <returns></returns>
        Public Function DoCmdRunSql(ByVal StrSql As String, Optional ByVal TornaKey As Boolean = False) As Object
            Dim strRead As String
            Dim ds As New DataSet
            Dim da As OleDbDataAdapter
    
            If ConndbLoc.State = ConnectionState.Closed Then
                ConndbLoc.ConnectionString = ConnLoc
                ConndbLoc.Open()
            End If
            Try
                strRead = StrSql
                da = New OleDbDataAdapter()
                da.SelectCommand = New OleDbCommand(strRead, ConndbLoc)
                ds = New DataSet()
                da.Fill(ds, "ChangeLog")
                If TornaKey Then
                    Dim cmdNewID As New OleDbCommand("SELECT @@IDENTITY", ConndbLoc)
                    Return CInt(cmdNewID.ExecuteScalar)
                Else
                    Return (ds)
                End If
            Catch ex As Exception
            Finally
            End Try
        End Function
        
        'controlla se un campo contiene NULL può impostarlo con un valore che puoi passare come ValoreDefault
        Public Function Nz(ByVal Campo As Object, Optional ByVal ValoreDefault As Object = Nothing, Optional ByVal ValoriVuotiComeNul As Boolean = False) As Object
            If VarType(Campo) = VariantType.Null Then
                Return ValoreDefault
            End If
            If ValoriVuotiComeNul = True And VarType(Campo) = VariantType.String Then
                If Campo = "" Then
                    Return ValoreDefault              
                End If
            End If
    		try
        	    If IsNumeric(Campo) Then
            	    Return Campo
    	        End If		
    	        Return Campo	        
    		Catch ex As Exception
    
           	    Return Campo
            End Try
        End Function
        
    End Module
Devi accedere o registrarti per scrivere nel forum
16 risposte