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