ok grazie ecco qui:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "DBInterface"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Public connessione As String
Private cn As New ADODB.Connection
Public Function apri()
cn.Open connessione
End Function
Public Function chiudi()
cn.Close
End Function
Public Function leggi_tabelle() As Recordset
'tabelle
Set leggi_tabelle = cn.OpenSchema(adSchemaTables)
End Function
Public Function leggi_campi(tabella As String) As Recordset
'campi
Set leggi_campi = cn.OpenSchema(adSchemaColumns, Array(Empty, Empty, tabella))
End Function
Public Function leggi_chiavi(tabella As String) As Recordset
'chiavi
On Error Resume Next
Set leggi_chiavi = cn.OpenSchema(adSchemaPrimaryKeys, Array(Empty, "dbo", tabella))
End Function
Public Function leggi_dati(query As String) As Recordset
Set rec = New ADODB.Recordset
rec.Open query, cn, 1
Set leggi_dati = rec
'Set leggi_dati = cn.Execute(query)
End Function
Public Function aggiungi(ByVal i As Integer, ParamArray dati()) As Boolean
'aggiunge un record
'i =numero di parametri -1
'dati()=nome tabella + coppie(campo, valore)
'esempio: 6, "prova", "id", 6, "valore1", 11, "valore2", 33)
On Error GoTo gesterr
aggiungi = False
query = "select * from " & dati(0)
Set rec = New ADODB.Recordset
rec.Open query, cn, 0, 3
rec.AddNew
For j = 1 To i - 1
rec.Fields(dati(j)).Value = dati(j + 1)
j = j + 1
Next
rec.Update
rec.Close
aggiungi = True
Exit Function
gesterr:
MsgBox "Errore", vbCritical, "DBInterface::Aggiungi"
End Function
Public Function elimina(ByVal i As Integer, ParamArray dati()) As Boolean
'elimina un set di record
On Error GoTo gesterr
elimina = False
Set rec = New ADODB.Recordset
'costruisce il filtro
filtro = " where"
param = dati(2)
If IsNumeric(param) = False Then param = Chr(34) & param & Chr(34)
filtro = filtro & " " & dati(1) & "=" & param
For j = 3 To i - 1
param = dati(j + 1)
If IsNumeric(param) = False Then param = Chr(34) & param & Chr(34)
filtro = filtro & " AND " & dati(j) & "=" & param
j = j + 1
Next
query = "select * from " & dati(0) & filtro
rec.Open query, cn, 0, 3
Do While Not rec.EOF
rec.Delete
rec.MoveNext
Loop
rec.Close
elimina = True
Exit Function
gesterr:
MsgBox "Errore", vbCritical, "DBInterface::Elimina"
End Function