Newsgroup: it.comp.lang.visual-basic
Titolo: VB & Access eliminazione record .............. sono alle prime armi

VB & Access eliminazione record
sto cercando di fare un piccolo programmino in VB6 client/server che mi
permetta di inserire cancellare e visualizzare dati tipo rubrica telefonica,
ora riesco a collegarmi al db e visualizzare il contenuto in una list box
questo è il codice :
Sub connetti()
percorsoDb = "c:\documenti\db1.mdb"
StrStringaConn = "Provider=Microsoft.Jet.OLEDB.4.0;"
StrStringaConn = StrStringaConn & "Data Source="
StrStringaConn = StrStringaConn & (percorsoDb)
StrStringaConn = StrStringaConn & ";Persist Security Info=False"
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.ConnectionString = StrStringaConn
cn.Open
End Sub
Sub load()
Set rs = cn.Execute(" select nomi from tabella")
mostra
End Sub
Sub mostra()
rs.MoveFirst
While Not rs.EOF
List1.AddItem rs("Nomi")
rs.MoveNext
Wend
End Sub
Private Sub Command1_Click()
load
End Sub
Private Sub Command2_Click()
rs.MoveFirst
While Not rs.EOF
If rs("nomi") = List1.Text Then
rs.Delete
End If
rs.MoveNext
Wend
End Sub
Private Sub Form_Load()
connetti
End Sub
il problema sorge quando cerco di cancellare il record che si riferisce al
nome che seleziono dalla list box,quando clicco sul bottone associato viene
visualizzato il segiente errore :"l'operazione richiesta dall'applicazione
non è supportata dal provider"!!! Dove sbaglio? potrei usare un altro metodo
ad esempio creando una query del tipo "DELETE * FROM Tabella WHERE nome =" &
List1.Text ? come scrivo il codice adatto!!?(preferirei questo secondo
metodo)

 metodo)
Ho provato e modificato il tuo codice. Cerca di capire, confrontando e con
l'aiuto dell'Help, perchè questo funziona. Nota anche quanto ho aggiunto in
Form_Unload. Adegua le variabili di comodo che ho assegnato in Form_Load.
'----------------------------------
Dim cn As Object
Dim rs As Object
Dim db As String
Dim tabella As String
Dim campo As String
Private Sub Form_Load()
    db = "C:\db1.mdb"       '<--Adegua
    tabella = "BANCHE"      '<--Adegua
    campo = "BANCA"         '<--Adegua
    connetti
End Sub
Sub connetti()
    percorsoDb = db
    StrStringaConn = "Provider=Microsoft.Jet.OLEDB.4.0;"
    StrStringaConn = StrStringaConn & "Data Source="
    StrStringaConn = StrStringaConn & (percorsoDb)
    StrStringaConn = StrStringaConn & ";Persist Security Info=False"
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    cn.ConnectionString = StrStringaConn
    cn.Open
End Sub
Private Sub Command1_Click()
    load
End Sub
Sub load()
    rs.Open "Select " & campo & " from " & tabella, cn, adOpenStatic,
adLockOptimistic, adCmdText
    mostra
End Sub
Sub mostra()
    List1.Clear
    If Not rs.EOF Then
        rs.MoveFirst
        While Not rs.EOF
            List1.AddItem rs(campo)
            rs.MoveNext
        Wend
    End If
End Sub
Private Sub Command2_Click()
    If List1.ListIndex < 0 Then
        Call MsgBox("Non hai selezionato alcun elemento", vbOKOnly +
vbExclamation)
        Exit Sub
    Else
        valore = List1.List(List1.ListIndex)
    End If
    rs.MoveFirst
    Do
        If rs.EOF Then Exit Do
        If rs(campo) = valore Then
            rs.Delete
            mostra
            Call MsgBox("Cancellato " & valore, vbOKOnly + vbInformation)
            Exit Sub
        End If
        rs.MoveNext
    Loop
    mostra
    Call MsgBox("Non ho trovato " & valore, vbOKOnly + vbExclamation)
End Sub
Private Sub Form_Unload(Cancel As Integer)
    On Error Resume Next
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub