2016-04-06 5 views
-3

Après how to select specific feid using a filter from access in C#Quelle est la différence entre ces requêtes?

Une autre question:

Je me rappelle cette méthode whit un événement de clic de SelectFeedbtn_Click et cela fonctionne:

public static void GetSelectedFeed(Form2 frm2) 
{ 
     string StrCon = System.Configuration.ConfigurationManager.ConnectionStrings["FeedLibraryConnectionString"].ConnectionString; 

     OleDbConnection Connection = new OleDbConnection(StrCon); 
     OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary", Connection); 

     DataTable DTable = new DataTable(); 
     DataA.Fill(DTable); 

     frm2.SelectedFeeddataGridView.DataSource = DTable; 
} 

mais quand je veux obtenir une carte d'identité de FeedSelectListBox qui DisplayMember soutire Nom/description et ValueMember est ID, il montre une exeption: {"Data type mismatch in criteria expression."},
la requête est:

public static void GetSelectedFeed(Form2 frm2) 
{ 
     string StrCon = System.Configuration.ConfigurationManager.ConnectionStrings["FeedLibraryConnectionString"].ConnectionString; 

     OleDbConnection Connection = new OleDbConnection(StrCon); 
     OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary where ID = 'frm2.FeedSelectListBox.SelectedValue'", Connection); 

     DataTable DTable = new DataTable(); 
     DataA.Fill(DTable); 

     frm2.SelectedFeeddataGridView.DataSource = DTable; 
} 

Que dois-je faire?

+1

Vous recevez des erreurs ou n'obtenez-vous aucun résultat? – Brad

+1

L'ID est probablement numérique. Supprimez les guillemets simples autour d'elle. « Select * from FeedLibrary où ID = 2 » – smoore4

+1

Désolé, mais « ne fonctionne pas » est pas une bonne description d'un problème. Avez-vous un message d'erreur? crash? exception? pas de données du tout? Avez-vous vérifié qu'il y a une ligne dans la base de données qui a un ID textuel avec cette valeur? –

Répondre

2

La première chose, ID est un entier donc il ne doit pas être passé entre guillemets ''. Vous passez frm2.FeedSelectListBox.SelectedValue comme une chaîne dans la requête, mais vous devez passer sa valeur avec la requête afin qu'il soit évalué et que votre requête devient exécutable.

OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary where ID = "+frm2.FeedSelectListBox.SelectedValue, Connection); 

    OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary where ID = "+FeedSelectedID, Connection); 
+0

chars, il a travaillé, maintenant, si la zone de liste ont la propriété de plusieurs de sélection, comment devrait écrire une requête pour obtenir toute la valeur sélectionnée de la zone de liste? –