Stringa SQL

mercoledì 09 maggio 2012 - 08.08
Tag Elenco Tags  VB.NET  |  Windows 7  |  Visual Studio Express  |  Access (.mdb)

olmof Profilo | Junior Member

Hola.
Dovrei inserire un nuovo record in un MDB e per farlo utilizzo queste righe:
cmd = New OleDbCommand(strSql, MyDBMov)
CreaRecord = cmd.ExecuteReader()
dove strSql è la variabile che contiene l'istruzione SQL.
Funziona tutto a patto che l'istruzione non sia troppo lunga, in tal caso mi viene segnalato l'errore:
'Impossibile aggiungere la quantità di dati desiderata. Inserire o incollare meno dati.'

Avete suggerimenti?
Grazie

AntCiar Profilo | Expert

ciao.

Questo è il tipico errore di Access di quando tenti di inserire in un campo di tipo Testo valori più lunghi della dimensione impostata a database per il campo.

ora le soluzioni sono 2:

1 - Aumenti la dimensione del campo (trovando prima qual è)
2 - Nell'applicazione limiti l'inserimento del valore che ti manda la query in errore
Cristian Barca

olmof Profilo | Junior Member

Intanto grazie per la risposta.
La cosa strana è che se copio la stringa dal programma, apro access 2003 e la eseguo come query funziona benissimo.

AntCiar Profilo | Expert

Allora è un problema "misto".
ci puoi postare l'intera stringa che invii? (se possibile ovviamente)
Cristian Barca

olmof Profilo | Junior Member

No problem.
Eccola:
INSERT INTO DocuTesta(TipoDoc, Numero, Data, CodNome, NumMag, NumOrd, DatOrd, CondPag, Traspo, DataPart, Porto, Spese, Banca, SpeseInca, AltreSpese, Destina1, Destina2, OraPart, ScontoVal, CodPag, Valuta, Assicurazione, CodBan, SpTrasPerc, NumColli, Destina3, Destina4, Destina5, CodCor, CorrRag, CorrInd, CorrCit, CorrCap, CorrPrv, TotaleImp, TotaleIva, TotalePag, ScontoValore, ScontoPerc, COcassa, COscontovalore, COscontoperc, COnetto, COpagato, COresto ) VALUES ('FT','2','09/05/2012','1','1','0','01/01/2000','','','09/05/2012','franco','0','','12','0','','','18:46:23','34,00','1','1','10','0','10','1','','','','','','','','','','968,10','203,301','0','34,00','0','0','0','0','0','0','0')

Ciao

AntCiar Profilo | Expert

Una domanda.
Ma nella tabella DocuTesta i campi sono dichiarati tutti come testo?

Te lo chiedo perchè hai passato nella SQL tutti i campi come stringa (hai messo il ' a tutti i valori anche quelli numerici e di data).

Se effettivamente i campi non sono tutti testo, allora il problema sta nel fatto che per Access le date le devi passare senza ' e nel formato mm/gg/aaaa, per le ore invece mm/gg/aaaa hh:mm:ss mentre per i numerici basta passarli senza ' e con il punto al posto della virgola.

Cristian Barca

olmof Profilo | Junior Member

No, non sono tutti testo.
Sono d'accordo sul discorso apici, però la cosa veramente strana è che prendendo la stringa ed eseguendola come query da Access funziona perfettamente.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5