[VB.NET2010]Tipi di dati non corrispondenti nell'espressione criterio....

mercoledì 30 gennaio 2013 - 22.40
Tag Elenco Tags  VB.NET  |  Visual Studio 2010

great_mirko Profilo | Newbie

Ciao a tutti.. E' da un ora che mi scervello su un errore che mi da Access e non so come uscirne. Ho controllato e ricontrollato piu volte ma non noto nulla di strano. Vi posto il codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

L'errore è questo: Tipi di dati non corrispondenti nell'espressione criterio.

Grazie mille ragazzi...

ridaria Profilo | Expert

stai tentando di mettere un tipo di dato in un campo che non è di quel tipo.

ex un valore testo in un campo data.

Controlla bene la corrispondenza dei tipi di dati e vedrai che ne uscirai vincente.

CIAO
Riccardo D'Aria

DomA Profilo | Expert

Ciao,
se, come penso, DataIscrizione e ScadenzaIscrizione sono Date allora prova a modificare come segue:

>>.Add("DataIscrizione", OleDbType.Date).Value = Date.Parse(frmIscrizione.mktInizioIscrizione.Text).ToShortDateString

la stessa cosa va fatta con ScadenzaIscrizione

un altro possibile errore è qui:

.Add("FigliIscritti", OleDbType.Integer).Value = frmIscrizione.txtFigliIscritti.Text

che va modificato così

>>.Add("FigliIscritti", OleDbType.Integer).Value = integer.parse(frmIscrizione.txtFigliIscritti.Text)

>>insomma .Text la puoi utlizzare solo per i dati di tipo Testo gli altri vanno convertiti nel tipo a cui corrispondono i campi del db

Spero di essere stato chiaro.

----------------------------------------------------------------------------------------------------------------








Ricorda che, accettare la risposta è un modo di ringraziare chi ci ha aiutato ed evidenziare che il problema è stato risolto.

http://www.infomidia.it

Domenico

great_mirko Profilo | Newbie

Ciao ti ringrazio per la risposta. Ma purtroppo mi da sempre lo stesso errore.

Sto anche inserendo i campi uno ad uno iniziando da questo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ridaria Profilo | Expert

continua, il problema e solo questo, ne uscirai vincente!

Quando mi accade io faccio così:
RISCRIVO LA QUERY PARTENDO CON UN SOLO CAMPO, IL PRIMO, E LA TESTO.

sE VA BENE AGGIUNGO IL SECONDO E LA TESTO

e contunuo campo per campo .......

Ad un certo punto becchi il campo/dato che ti genera l'errore, e come dico io lo hai impallinato.


CIAO
Riccardo D'Aria

great_mirko Profilo | Newbie

e hai ragione, ma se l'errore te lo da con il primo campo?

DomA Profilo | Expert

Proviamo a riscrivere il tutto:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Utilizza il metodo come sopra e dimmi se funziona.

Prima di procedere all'inserimento puoi anche verificare se il contenuto di una textbox è numerico oppure no. Guarda qui:
http://www.infomidia.it/notizia.aspx?cod=129

----------------------------------------------------------------------------------------------------------

Ricorda che, accettare la risposta è un modo di ringraziare chi ci ha aiutato ed evidenziare che il problema è stato risolto.

http://www.infomidia.it

Domenico

great_mirko Profilo | Newbie

Bah cosi pare che funziona.. Ora me la studio la funzione e la ottimizzo di piu.. Grazie a tutti..

DomA Profilo | Expert

Un ultimo consiglio: racchiudi sempre i nomi dei campi tra perentesi quadre [Nome_campo]

cosi l'insert diventa:

queryString = "INSERT INTO Iscrizione ([NumeroContratto]) VALUES (@NumeroContratto)"

Grazie per aver accettato la risposta,

cmq non è un problema

----------------------------------------------------------------------------------------


Ricorda che, accettare la risposta è un modo di ringraziare chi ci ha aiutato ed evidenziare che il problema è stato risolto.

http://www.infomidia.it

Domenico

DomA Profilo | Expert

Una curiosità mi è arrivata la mail di Risposta Accettata.
Ti rigrazio

Perché vedo colorata verde la risp. di ridaria?

E' un malfunzionamento del sito?

-----------------------------------------------------------------------------------------
Ricorda che, accettare la risposta è un modo di ringraziare chi ci ha aiutato ed evidenziare che il problema è stato risolto.

http://www.infomidia.it

Domenico

DomA Profilo | Expert

Ritornando al problema, e lasciando stare le banalità, mi pare di aver notato 3 errori:

>>1) nei parametri non inserivi il nome del campo di destinazione. Il parametro va dichiarato così:

Parameters.Add("@NomeParametro, "DriverDB".TipoDati, lunghezza, campo_di_destinazione)

es: cmdInsDati.Parameters.Add("@NumeroContratto", OleDb.OleDbType.Integer, 4, "NumeroContratto").Value

>>2) Occorre sempre convertire i dati nel formato corrispondente ai relativi campi nel db.

Es.: Integer.Parse(frmIscrizione.txtNumeroContratto.Text); Date.Parse(frmIscrizione.mktInizioIscrizione.Text).ToShortDateString

>>3) E' buona norma racchiudere i nomi dei campi tra parentesi quadre; a volte senza saperlo utilizziamo come nome di un campo una parola riservata.

Es.: "INSERT INTO Iscrizione ([NumeroContratto]) VALUES (@NumeroContratto)"

A presto,

--------------------------------------------------------------------------------------------------------------





Ricorda che, accettare la risposta è un modo di ringraziare chi ci ha aiutato ed evidenziare che il problema è stato risolto.

http://www.infomidia.it

Domenico

great_mirko Profilo | Newbie

Esattamente.. Seguendo i tuoi consigli ho risolto cosi :-)

DomA Profilo | Expert

a buon rendere

-------------------------------------------------------------------


Ricorda che, accettare la risposta è un modo di ringraziare chi ci ha aiutato ed evidenziare che il problema è stato risolto.

http://www.infomidia.it

Domenico
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5