Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Come inserisco dati in un DB :(

    Ciao a tutti, Ragazzi, Ragazze Moderatoiri e Moderatrici. Ho un problema ed è da qualche mese che ci sbatto la testa.

    E purtroppo senza MSDN non ho la possibilità di concludere nulla da sola!

    NON RIESCO ad inserire un nuovo maledetto record in un DB Access.
    Per la connessione ho utilizzato il codice messo a disposizione dal Mitico Xegallo, ma non riesco ad inserire DATI:

    ho provato così:
    codice:
    sql = "INSERT INTO cliente (0, 1, 2, 3) VALUES (" & Text1.Text & ", " & Text1.Text & ", " & Text1.Text & ", " & Text1.Text & ");"
    Cn.Execute sql
    E mi dice "Nessun valore specificato per alcuni parametri necessari" Ma che vuol dire?????????????????????????

    Volevo provare con AddNew, ma non so la sintassi e il visualizza oggetti non dice proprio nulla!!!

    Potete darmi una mano??? Grazie
    Paperina :-)

  2. #2
    Non mettere i valori 0,1,2 ecc...ma il nome vero dei campi (se il nome vero è quello...never mind... ).
    Se i campi che stai inserendo sono campi testo, vanno inseriti tra apici.
    Quindi la sintassi INSERT è:
    INSERT INTO nome_tabella (campotesto, camponumerico) VALUES ('valorecampotesto', valorecamponumerico)

    Se un campo è una data va inserito tra cancelletti ( # ).

    Il codice per l'addnew è un pò complicato, ma solo per il fatto che devi caricare nel progetto le librerie DAO o ADO, a seconda di quali vuoi usare. Una volta fatto puoi fare qualcosa del tipo (nell'esempio usando ADO):
    [code]
    Dim conn as New Connection
    Dim rs as New Recordset
    rs.Open "SELECT * FROM nometabella", conn, ...(altri 2 parametri per l'apertura del recordset)
    rs.AddNew
    rs("Campo1") = valorecampo1
    rs("Campo2") = valorecampo2
    rs.Update

    Spero di esserti stato di aiuto.

  3. #3
    Mi sei stato molto di aiuto. Grazie.
    Quale dei due metodi di inserimento mi consigli?

    Nel mio programma la connessione è di tipo ADO quindi il codice gia c'è e mi muovo nel RS come voglio, in oltre ho chiamato i miei campi del db 0,1,2,3,4,5 per fare qualcosa del genere:

    rs.AddNew
    for I = 0 to 5
    rs("& I &") = Text(I).text
    rs.Update

    dovrebbe funzionare no??

    Hai qualche altro consiglio???


    Grazie Mille
    Paperina :-)

  4. #4
    Originariamente inviato da Paperina(l4p)
    Mi sei stato molto di aiuto. Grazie.
    Quale dei due metodi di inserimento mi consigli?

    Nel mio programma la connessione è di tipo ADO quindi il codice gia c'è e mi muovo nel RS come voglio, in oltre ho chiamato i miei campi del db 0,1,2,3,4,5 per fare qualcosa del genere:

    rs.AddNew
    for I = 0 to 5
    rs("& I &") = Text(I).text
    rs.Update

    dovrebbe funzionare no??

    Hai qualche altro consiglio???


    Grazie Mille
    Bah, io preferisco l'SQL (è un unico comando), però non so esattamente quale dei 2 risulta più veloce (suppongo cmq l'SQL, visto appunto che è un unico comando).
    Si, il codice che hai scritto dovrebbe funzionare, non so però quanto ti potrà essere utile nei progetti futuri, quando ci saranno campi più specifici o quando dovrai gestire cose particolari.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    I campi puoi chiamarli benissimo con nomi e non numeri, se vedi bene con il recordset puoi riferirti al nome di un campo o alla sua posizione nella tabella, quindi per accere al primo campo ti basta rs(0) dato che partono da 0, per usare il nome rs!nome.

    L'uso dell'istruzione SQL è più veloce, con AddNew e Update fai 2 istruzioni, oltre a dover aprire il recordset e posizionarti. AddNew ti crea un nuovo record vuoto, poi questo record va riempieto, quindi fatta una Update per aggiornare.
    Ans.

  6. #6

    Ragazzi.... c'è un problemino.....

    Ciao ragazzi....c'è un piccolo problema,cioè che in entrambi i casi il compilatre genera un errore!!
    Dice "operazione non consentita se l'oggetto è aperto" e che vuol dire??? Come faccio?? Ho notato che anche se da l'errore il record lo inserisce lo stesso.

    Che mi consigliate? di catturare l'errore e non gestirlo a che altro?
    Paperina :-)

  7. #7

    Re: Ragazzi.... c'è un problemino.....

    Originariamente inviato da Paperina(l4p)
    Ciao ragazzi....c'è un piccolo problema,cioè che in entrambi i casi il compilatre genera un errore!!
    Dice "operazione non consentita se l'oggetto è aperto" e che vuol dire??? Come faccio?? Ho notato che anche se da l'errore il record lo inserisce lo stesso.

    Che mi consigliate? di catturare l'errore e non gestirlo a che altro?
    Scrivi in quale riga ti genera l'errore.

  8. #8
    codice:
    Sub connetti()
       With Cn
          .ConnectionString = "Provider = Microsoft.Jet.OleDB.4.0;" &_
     "Data source = C:\db.mdb"
                              'nella prima riga si specifica il provider
                              'nella seconda il percorso al db
          .ConnectionTimeout = 5 'numero dei secondi di timeout
          .CursorLocation = adUseClient 'tipo di cursore
          .Mode = adModeShareDenyNone 'nessuna limitazione
          .Open 'apertura ricordarsi di chiuderla
       End With
       With Rs
          .ActiveConnection = Cn ' imposta a che connessione si riferisce
          .LockType = adLockOptimistic ' imposta il tipo di lock
       End With
    End Sub
    la riga che mi segnala l'errore è:
    .ConnectionString = "Provider = Microsoft.Jet.OleDB.4.0;" &_
    "Data source = C:\db.mdb"


    cosa puo essere?
    Paperina :-)

  9. #9
    tra la & e _ ci va uno spazio
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  10. #10
    eh si si....lo spazio c'è, è scritto in maniera corretta perchè si connette perfettamente!!
    La connessione e la lettura funziona a meraviglia, il problema è che quando utilizzo cn.execute sql mi genera quell'errore strano in quella riga!!

    E' questo che non capisco, l'istruzione funziona, ma perchè quando faccio cn.execute va in errore???


    Grazie
    Paperina :-)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.