C# QUERY CON DATETIMEPICKER

giovedì 15 gennaio 2009 - 11.22

giobaxx Profilo | Junior Member

CIAO!!....da utente inesperto potete aiutarmi con la sintassi della query utilizzando il datetimepicker??

Allora il linguaggio che sto utilizzando è il visual c# 2008, non sono un programmatore ma in passato qualcosina avevo fatto e a lavoro mi hanno chiesto di fare un programmino per gestire un database....una cosa abbastanza semplice.
Volevo costruire una query da richiamare tutte le volte che necessitavo di filtrare i dati e tutto funziona fino a quando non utilizzo il datetimepcker per filtrare i dati:

selezionando ad esempio il 15/05/2008 dal datetimepicker il valore della query mi viene
" marcapezzo LIKE'*'AND data <=#15/05/2008 0.00.00# "
e quando eseguo il
qFotoBindingSource.Filter = filter
con filter appunto "marcapezzo LIKE'*'AND data <=#15/05/2008 0.00.00#" viene fuori il seguente errore:
String was not recognized as a valid DateTime
.

potete aiutarmi a capire quale è la sintassi giusta???

private void FilterChanged(object sender, EventArgs e)
{
string filter = "";

if (rdDescrizione.Checked ) { filter += " descrizione LIKE'" + textBox1.Text + "*'"; };
if (rdMarcaPezzo.Checked ) { filter += " marcapezzo LIKE'" + textBox1.Text + "*'"; };
if (chkCost.Checked && comboBox1.Text != "") { filter += "AND costruzione =' " + comboBox1.Text + "'"; }

if (chkData.Checked)
{
filter += "AND data <=#" + dateTimePicker1.Value.Date + "#";
}
qFotoBindingSource.Filter = filter;

}

Jeremy Profilo | Guru

>selezionando ad esempio il 15/05/2008

Probabilmente, in Italia, non esiste il mese 15
Intendo dire....probabilmente devi impostare la data con mese/giorno/anno.
Prova così...eventualmente fatti risentire.

giobaxx Profilo | Junior Member

...forse dovrei usare le query parametriche ma mi toccherebbe ricercare gli appunti che avevo trovato poichè non mi ricordo molto, tra l'altro sto usando il visual c# 2008 e non so se sono le hanno la stessa sintassi del visual c# 2003, non sono un programmatore e quindi ho molti bachi....

il programmino che devo fare è una cosa abbastanza semplice una query composta dicamo tra tre campi.....a quanto ho capito il problema sta nel fatto che tale query andrebbe fatta con il formato americano della data cioè MM/dd/yyyy, mentre noi utiliziami ovviamente il formato italiano dd/MM/yyyy, quindi dovrei prima convertire il formato da dd/MM/yyyy a MM/dd/yyyy e successivamente passare questo valore alla query.....

il problema è che riesco a cambiare formato ma poi invece di una data dd/MM/yyyy ho una stringa MM/dd/yyyy....a questo punto devo fare per fare la query???

Jeremy Profilo | Guru

Io, in realtà, non sò se il problema sia realmente quello.....lo suppongo.
E' ovvio che ti straconsiglio le query parametriche, ma comunque, l'ultima tua affermazione riguardo alla restituzione di una stringa dopo la conversione nel formato, non ha molto senso...voglio dire....la query è di per se una stringa, quindi......
Altrimenti non ho capito l'ultima parte del tuo messaggio

giobaxx Profilo | Junior Member

mi ricordo che il problema del formato della data c'è sempre stato, cioè quando passavi la query il campo data doveva essere del tipo mese\giorno\anno...

in vb.net c'è un comando che è mi sembra:

Dim Currentdate as date
currentdate = Format(Date.Today, "MM/dd/yyyy")

questo comando a quanto ho capito in c# non esiste, ho trovato un comando che fa la seguente cosa ma cambia tipo da data a stringa

datetime Mydate=dateTimePicker.value
string Mydate2= Mydate.ToString ("MM/dd/yyyy"); che ovviamente mi da la data nel formato che voglio io ma mi converte il tipo datetime in string...

Ora quando concateno la query il tipo dateTimePicker1.Value è di tipo Datetime, ....ma se mettessi MyDate2 avrei una stringa.....quindi il tipo non è corretto e si verifica un errore

if (rdDescrizione.Checked ) { filter += " descrizione LIKE'" + textBox1.Text + "*'"; };
if (rdMarcaPezzo.Checked ) { filter += " marcapezzo LIKE'" + textBox1.Text + "*'"; };
if (chkCost.Checked && comboBox1.Text != "") { filter += "AND costruzione =' " + comboBox1.Text + "'"; }
if (chkData.Checked) {filter += "AND data <=#" + dateTimePicker1.Value + "#" ;}

potrei fare le query parametriche ma per la cretinata che deovo fare io con 4 righe di codice risolvo!!..

Jeremy Profilo | Guru

>Ora quando concateno la query il tipo dateTimePicker1.Value è di tipo Datetime, ....ma se mettessi MyDate2 avrei una stringa.....quindi il tipo non è corretto e si verifica un >errore

Noooo...perchè dici ciò.
"SELECT * FROM TABLE1 WHERE Data<=#" & MyDate2 & "#" ...non può darti errore...perche???

Comunque le query parametriche non sono mai sprecate.

giobaxx Profilo | Junior Member

l'errore è il seguente.....

Operator '&' cannot be applied to operands of type 'string' and 'string'

mi sa che se non passo alle query parametriche non ci esco.........

Jeremy Profilo | Guru

Si scusa...pensavo al VB

per il c devi usare + per la concatenazione delle stringhe
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