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