Non riesco ad inserire una riga in una tabella di un database ACCESS (...

venerdì 02 luglio 2004 - 16.23

gigimix Profilo | Newbie


L’errore che mi viene restituito è: Errore di sintassi nell’istruzione INSERT INTO.
Ho provato sia con il CommandBuilder che con un’istruzione SQL ad hoc, ma l’errore è sempre lo stesso.
Ecco cosa ho fatto:
Ho la necessità di leggere 2 tabelle da un DB Access e lo faccio con: "SELECT * FROM Eventi order by DataInizio DESC" e con "SELECT * FROM Eventi_ECM order by DataInizio DESC".
I risultati li metto in omonime tabelle di un DataSet: adapter.fill(dataset, “Eventi”) e adapter.fill(dataset, “Eventi_ECM”)
Tutto ok con le letture e la relativa visualizzazione in un DataGrid.
Adesso ho preparato un Form per l’inserimento di una nuova riga per la tabella Eventi, quindi alla pressione del Button “Inserisci”, creo una nuova Row, riempio le colonne della nuova riga con i valori delle txtbox del form di inserimento, aggiungo la Row alla tabella nel DataSet e faccio l’update dell’adapter ed ecco l’errore.
Mettendo un punto di interruzione prima del comado Update, ho potuto estrarre l’istruzione SQL creata dal CommandBuilder: "INSERT INTO Eventi( TitoloCorso , Posti , Destinatario , Edizioni , DataInizio , DataFine , DateCorso , SedeCorso , Mod_Iscrizione , Accr_ECM , Note , Tipo , Tassa_Iscrizione ) VALUES ( ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? )".
Le colonne ci sono tutte meno IDRecord che è una chiave primaria autoincrementante e ho pensato che l’errore fosse li infatti nella versione “manuale” del comando SQL aggiungo manualmente il campo, ma sempre errore.
Sono alle prime armi ok, maaaaaa bhoooo, AIUTO!
Vi incollo il codice per la lettura dal DB e quello per l’isert.

Klaus-zanini Profilo | Senior Member

Ciao gigimix,

forse non è questa la soluzione al tuo problema ma credo valga la pena tentare:

prova a inserire anche l'apice singolo quando inserisci i valori, ossia:

VALUES('" & id & "','" & Me.txbTitoloCorso.Text & "',' " & Me.txbPosti.Text & "',' " & Me.txbDestinatario.Text & "',' " & Me.txbEdizioni.Text & "',' " & Me.txbDataInizio.Text & "',' " & Me.txbDataFine.Text & "',' " & Me.txbDateCorso.Text & "',' " & Me.txbSedeCorso.Text & "',' " & Me.txbModIscrizione.Text & "',' " & Me.txbAccrediti.Text & "',' " & Me.txbNote.Text & "',' " & Me.txbTipo.Text & "',' " & Me.txbTassaIscrizione.Text & "')"


Può darsi che il problema sia legato al fatto che alcuni tipi (ad esempio le date) possano creare problemi.
prova anche manualmente questa operazione inserendo anziché questo:

VALUES (Greco antico,50,Rossi,Mondadori,15/09/2004,....

quest altro

VALUES('Greco','50','Rossi','Mondadori','15/09/2004',...)

Fammi sapere
Klaus

Klaus-zanini Profilo | Senior Member

In effetti non si nota l'apice:

VALUES( ' " & id & " ' , ' " & Me.txbTitoloCorso.Text & " ' , ' " & Me.txbPosti.Text & " ' , ' " & Me.txbDestinatario.Text & " ' , ' " & Me.txbEdizioni.Text & " ' , ' " & Me.txbDataInizio.Text & " ' , ' " & Me.txbDataFine.Text & " ' , ' " & Me.txbDateCorso.Text & " ' , ' " & Me.txbSedeCorso.Text & " ' , ' " & Me.txbModIscrizione.Text & " ' , ' " & Me.txbAccrediti.Text & " ' , ' " & Me.txbNote.Text & " ' , ' " & Me.txbTipo.Text & " ' , ' " & Me.txbTassaIscrizione.Text & " ' )"

Ciao

freeteo Profilo | Guru

ciao,
per risolveri i problemi di questo tipo conviene utilizzare i parametri e usare stringhe tipo:
"insert into tabella (campo1,campo2) values (@campo1,@campo2)"
poi all'oggetto command aggiungi parametri alla collezione parameters con il nome @campo... e cosi anche se i tipi sono date, stringhe con apostrofi etc... tu sei a posto ;-)

io lo consiglio perche mi sonosempre trovato bene con questo metodo anche se scrivo qualche riga in piu...
ciao

gigimix Profilo | Newbie

Grazie per l'aiuto ragazzi.
La soluzione che ho trovato è stata quella di mettere i nomi delle colonne tra parentesi quadre[]:
INSERT INTO [nometabella] ([TitoloCorso] , [datainizio], ecc....) values ('xxxx','yyyyy').
Resta il fatto che il commanbuilder non generava un' istruzione sintatticamente corretta....cime mai?

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5