Visual Studio 2019 C#. Salvare i dati da DataGridView in Access.

mercoledì 05 agosto 2020 - 15.23
Tag Elenco Tags  C#

Pacifico Profilo | Junior Member

Gent.mi,

questa volta sono in dificoltà per il salvataggio dei dati inseriti in DataGrdiView in Database di Access che mi indica l'errore di sintassi nell'istruzione in "Insert Into" che non riesco trovare il suddeto errore.

Il DataGridView, viene regolarmente popolato dalle TextBox e con il seguente codice dovrebbe salvare in Database di Access:

> Conn = new OleDbConnection(connStr);
Conn.Open();
String sSQL = "INSERT INTO tabella(Categoria, Link, Nome, Passo, Note) VALUES('" + Txt_Categoria.Text + "','" + Txt_Link.Text + "','" + Txt_Nome.Text + Txt_Riserva.Text + Txt_Note.Text + "')";

OleDbCommand cmd = new OleDbCommand(sSQL, Conn);
cmd.ExecuteNonQuery();

se gentilmente potete suggerire nel superare l'ostacolo.

Anticipatamente ringrazio, saluto.
Domenico.

morpheus87mi Profilo | Junior Member

Ciao Domenico,
qual è il nome della tabella?

La sintassi SQL per fare l'insert è

INSERT INTO nometabella etc etc

tu hai messo tabella.

Per le prossime volte, è consigliato che posti anche l'errore :-)
______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo Morpheurs87mi,

ringrazio della gentilezza e disponibilità.
L'errore che rilevo:
> Errore di sintassi nell'istruzione INSERT INTO <
Ho provato senza riuscire e posto il codice per intero:

public partial class Frm_Prova : Form
{
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\Promemoria.mdb";
OleDbConnection Conn;
OleDbDataAdapter Adapter;
string tabella = "Archivio";
DataSet Ds = new DataSet();

> private void Frm_Prova_Load(object sender, EventArgs e)
{
Tabella_Link.DataSource = table;
Conn = new OleDbConnection(connStr);
string sSQL = ("SELECT * FROM " + tabella);
OleDbCommand Cmd = new OleDbCommand(sSQL, Conn);
Adapter = new OleDbDataAdapter(Cmd);
OleDbCommandBuilder CB = new OleDbCommandBuilder(Adapter);
Adapter.Fill(Ds, tabella);
Tabella_Link.DataSource = Ds.Tables[tabella];

private void Menu_Salva_Click(object sender, EventArgs e)
{
Conn = new OleDbConnection(connStr);
Conn.Open();
String sSQL = "INSERT INTO Archivio(Categoria, Link, Nome, Passo, Note) VALUES('" + Txt_Categoria.Text + "','" + Txt_Link.Text + "','" + Txt_Nome.Text + Txt_Riserva.Text + Txt_Note.Text + "')";
OleDbCommand cmd = new OleDbCommand(sSQL, Conn);
cmd.ExecuteNonQuery();

Mi scuso ed auguro di non aver commesso qualche errore di copia ed incolla.
Ho provato ad inserire sia il nome della tabella che "tabella" con esito negativo.

Sono sempre a ringraziare oltre della disponibilità anche per la pazienza.
Domenico.

morpheus87mi Profilo | Junior Member

L'errore è molto semplice:
Nella riga

String sSQL = "INSERT INTO Archivio(Categoria, Link, Nome, Passo, Note) VALUES('" + Txt_Categoria.Text + "','" + Txt_Link.Text + "','" + Txt_Nome.Text + Txt_Riserva.Text + Txt_Note.Text + "')";

hai messo il + invece della virgola. Mi riferisco ai valori dentro la VALUES

Quindi la sintassi corretta è

String sSQL = "INSERT INTO Archivio(Categoria, Link, Nome, Passo, Note) VALUES('" + Txt_Categoria.Text + "','" + Txt_Link.Text + "','" + Txt_Nome.Text + "','" + Txt_Riserva.Text + "','" + Txt_Note.Text + "')";
______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo Morpheurs87mi,

presenta lo stesso errore:

> Errore di sintassi nell'istruzione INSERT INTO <

Scusa e ringrazio.
Domenico.

morpheus87mi Profilo | Junior Member

Ho dato per scontato che tutti i campi siano stringhe. Giusto? Se si usa la seguente

String sSQL = "INSERT INTO Archivio(Categoria, Link, Nome, Passo, [Note]) VALUES('" + Txt_Categoria.Text + "','" + Txt_Link.Text + "','" + Txt_Nome.Text + "','" + Txt_Riserva.Text + "','" + Txt_Note.Text + "')";

In altri casi prova a togliere gli apici nei campi numerici
______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo Morpheurs87mi,

non fa l'errore e non salva i dati.
I campi sono stringhe e non numerici.
Se elimino le parentesi quadre vi è l'errore.
scusami.
Domenico

morpheus87mi Profilo | Junior Member

Buongiorno Domenico,
il campo Note necessita delle quadre in quanto una parola chiave.

Ti chiedo di fare 2 cose:
1. conoscere il valore della variabile sSQL: esegui un debug
2. eseguire una Insert diretta, ovvero senza recuperare i campi dalle text: string sSQl: "INSERT INTO Archivio(Categoria, Link, Nome, Passo, [Note]) VALUES('A', 'B', 'C', 'D', 'E')";

Fammi sapere
______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo Morpheurs87mi,
non succede nulla sulla variabile sSQl, che è tratteggiata di rosso, viene la seguente finestra;

> (Variabile locale) string sSQl
la variabile "sSQl" è assegnata, ma il suo valore non viene mai usato.
Assegnazione non necessaria di un valore a "sSQl"

Visto la difficoltà una cortesia se invio il file zippato potresti dare una occhiata?
Rifaccio il file solo parte interessata.
Ringrazio della disponibilità.
Domenico.

morpheus87mi Profilo | Junior Member

Se mi dai il tuo contatto skype ti aggiungo e facciamo la condivisione dello schermo.
Non ho Visual Studio installato in questo pc.
______________________________________________________________________________
Basta solo un carattere sbagliato nel codice sorgente per distruggere un'intera applicazione

Pacifico Profilo | Junior Member

Gent.mo Morpheurs87mi,

con vero piacere, non uso Skype uso Team Viewer il mio ID:
> 102941596
Password:
83eii6
Grazie
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