2010-07-20 4 views
2

J'essaie de faire correspondre une date d'une colonne dans une feuille Excel dont le type de colonne est DateTime. en utilisant la requête suivanterequête de sélection de colonnes excel en C# winform

DateTime dtNew = Convert.ToDateTime("7/16/2010"); 
OleDbDataAdapter da = new OleDbDataAdapter("Select * FROM [" + SheetName + "$] where [Hand off date] = '" + dtNew + "'", conn); 

Je reçois

non-concordance des types de données dans l'expression de critère.

aidez s'il vous plaît à ce sujet.

Répondre

1

Puisque vous utilisez le fournisseur JET db (je suppose ici), ce qui signifie que la chaîne de connexion ressemble à quelque chose comme:

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\SOTest3.xls;Extended Properties=""Excel 8.0;HDR=YES;"""; 

Vos dates ont besoin être entouré de signes '#' (excluant les guillemets simples). Cela devrait fonctionner.

Voici un exemple qui fonctionne pour moi:

static void Main(string[] args) 
{ 
    string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\SOTest3.xls;Extended Properties=""Excel 8.0;HDR=YES;"""; 
    DbProviderFactory factory = 
     DbProviderFactories.GetFactory("System.Data.OleDb"); 

    using (DbConnection connection = factory.CreateConnection()) 
    { 
     connection.ConnectionString = connectionString; 
     using (DbCommand command = connection.CreateCommand()) 
     { 
      connection.Open(); //open the connection 
      DateTime dtNew = Convert.ToDateTime("7/21/2010"); 
      DbDataAdapter da = factory.CreateDataAdapter(); 
      da.SelectCommand = command; 
      da.SelectCommand.Connection = connection; 
      da.SelectCommand.CommandText = "SELECT * FROM [Sheet1$] WHERE [Hand Off Date] = #" + dtNew.ToString("yyyy-MM-dd") + "#"; 
      DataTable dtDate = new DataTable(); 
      da.Fill(dtDate); 
      Console.WriteLine(dtDate.Rows.Count); 
      Console.ReadLine();      
     } 
    } 
} 

Hope this helps !!

0

Avez-vous essayé

OleDbDataAdapter da = new OleDbDataAdapter("Select * FROM [" + SheetName + "$] where [Hand off date] = '" + dtNew.ToString("yyyy-mm-dd") + "'", conn); 
+0

Je l'ai essayé. Mais ça ne marche pas. –

Questions connexes