Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VB] Problemi con inserimento in db Access

    Ciao,
    ho notato che quando apro una connessione con un componente adodc verso un db, e quindi una tabella, di access l'insert tramite sql non funziona finchè non inserisco a mano da access la prima riga nella tabella. E' un errore mio oppure c'è qualcosa che devo settare nella connection string o in qualche altra cosa?

    Grazie.
    Ty
    =^_^=

  2. #2
    prova a postare il codice

  3. #3
    ecco tutto il codice:

    Dim n1, n2 As String

    Public cn As ADODB.Connection
    Public rs As ADODB.Recordset

    Private Sub Command2_Click()
    Adodc1.Refresh
    End Sub

    Private Sub Command1_Click()

    n1 = CStr(tnome.Text)
    n2 = CStr(tnote.Text)
    c = 0

    sql1 = "select * from nomi"
    Set rs = New ADODB.Recordset
    rs.Open sql1, cn

    Do While Not rs.EOF
    c = c + 1
    rs.MoveNext
    Loop

    c = c + 1

    sql = "INSERT INTO nomi VALUES (" & c & ",' " & n1 & " ', ' " & n2 & " ')"
    cn.Execute sql
    cn.Close

    End Sub

    Private Sub Command3_Click()
    Dim chiave As String
    chiave = InputBox("inserisci il nome da rivercare", "trova")

    End Sub

    Private Sub Command4_Click()
    Unload Me
    End Sub

    Private Sub Form_Load()
    Set cn = New ADODB.Connection
    strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb"
    cn.Open strcon
    End Sub

  4. #4
    allora..

    c'è qualche inesattezza
    nella funzione Command1_click
    1. la variabile c la usi come contatore? se si non devi inserire tu il valore, ma impostarla come Autonumber (forse in access si chiama diversamente), comunque un tipo numerico che si incrementa da sola
    2. In generale se vuoi sapere il numero di record in una tabella non devi contarli in un ciclo, puoi usare la propriete RecordCount del recordset. (quando lo apri: rs.open SQL,Conn,3,3)
    3. Se metti il campo chiave come autonumber lo devi togliere dalla stringa SQL: "INSERT INTO nomi (Nome,Note)VALUES (" & n1 & " ', ' " & n2 & " ')"
    4. dopo il ciclo è meglio chiudere il recordset rs.close
    5. Dopo conn.execute chiudi la connessione e non la riapri mai, quindi se riclicchi su command1 la connessione è chiusa e non funziona
    6. occhio: Dim n1, n2 As String in questa riga n2 è di tipo stringa e n1 di tipo variant

    In generale il codice è un po disordinato.... se fossi in te metterei almeno Option Explicit all'inizio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.