2017-10-19 42 views
-3

J'ai un problème avec mon code. Je veux filtrer entre deux dates. Voici mon code. J'utilise Microsoft Access Database.Aucune valeur donnée pour un ou plusieurs paramètres requis à l'aide de datetimepicker

private void button2_Click(object sender, EventArgs e) 
{ 
    OleDbCommand cmd = new OleDbCommand("Select * From Table2 where TransacDate between '" + dateTimePicker1.Value.ToString() + "' And '" + dateTimePicker2.Value.ToString() + "'", conn); 
    OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 
    dataGridView1.DataSource = ds; 
} 

Maintenant, il y a une ligne vide dans mon datagridview.

+0

Quelle est la chaîne résultante réelle du code SQL que vous exécutez? Êtes-vous capable de l'exécuter manuellement sur la base de données? – David

+0

Pouvez-vous d'abord placer la requête dans une chaîne et nous montrer le contenu de cette chaîne? Comme dans 'var debugString =" Sélectionnez * From Table2 où Transac_Date entre '"+ dataTimePicker1.Value.ToString (" MM-jj-aaaa ") +"' Et "" + dateTimePicker2.Value.ToString ("MM- dd-yyy ") +" '";' – oerkelens

+0

Fait de le mettre dans une chaîne. @oerkelens – dad

Répondre

2

J'ai récemment fait la même erreur avec un format datetime.

Essayez

"MM-dd-yyyy" 

au lieu de

"MM-dd-yyy" 
+0

C'est ma théorie, ça prend soit yy ou yyyy. Le yyy peut être en train de jeter ça. –

+0

Je l'ai déjà changé de aaaa à yyyy et l'erreur est la même. – dad

+0

Etes-vous sûr que c'est le datetimepicker sur lequel il est accroché? Essayez cette modification, 'OleDbDataAdapter da = new OleDbDataAdapter (cmd, conn);' car je crois que cela nécessite toujours une connexion à la référence. –

0

Dates dans l'accès doit être joint par # octothorpes.

Modifier votre code:

"Select * From Table2 where Transac_Date between #" + dateTimePicker1.Value.ToString("MM-dd-yyyy") + "# And #" + dateTimePicker2.Value.ToString("MM-dd-yyyy") + "#"; 
+0

J'ai essayé '#', la même erreur apparaît. – dad

0

On ne sait pas à ce que l'application ou l'extrémité avant est de générer cette instruction SQL. Cela ne ressemble en rien à la syntaxe d'Access.

Je suggère, dans Access, d'utiliser la vue de conception de requête standard - et de générer une requête qui aboutit à l'ensemble de données que vous recherchez. Ensuite, vous pouvez option/mettre cette requête en SQL View pour voir la syntaxe.