2013-03-20 3 views
4

J'ai une application C# (utilisant VS 2010 premium) implémentant un ensemble de données fortement typé qui est connecté à une base de données MS Access 2003. Je suis un adaptateur de mise en œuvre de la table au sein de cet ensemble de données dont le script SQL est:C# ensemble de données fortement typé dont l'adaptateur de table ne renvoie pas le résultat attendu

SELECT [ID], [Name], [Created By] 
FROM [Table Group] 
WHERE [Created By] = ? 
AND [ID] IN (SELECT [Group ID] FROM [Table Clustering] WHERE [Cluster ID] = ?) 
ORDER BY [Name] 
problème

est-il ne retourne rien, mais soi-disant qu'il devrait (j'ai des données d'échantillons dans ma base de données). J'ai déjà essayé d'implémenter le même script dans MS Access (en remplaçant les? S avec des données réelles) et il retourne les données que je m'attendais.

J'ai expérimenté en supprimant "WHERE [Cluster ID] = ?" dans l'instruction SELECT intégrée, et il a retourné des données mais ce n'est pas ce dont j'ai besoin.

J'ai également fait une autre expérience en remplaçant le? dans l'instruction SELECT intégrée avec un [ID de cluster] réel et il a renvoyé des données, mais encore une fois ce n'est pas ce dont j'ai besoin.

Alors, quel est le problème du script SQL dans l'adaptateur de table? Est-il capable d'implémenter un SELECT dans un SELECT? de plus, est-il capable de mettre en œuvre un? dans un SELECT dans un SELECT? Comment?

merci! =)

The strongly-typed dataset I was taking about

The SQL builder I am using to create the table adapter

donc comme prévu, IDE génère automatiquement une méthode (pour récupérer des données) pour l'adaptateur de table je l'ai fait, ergo je ne ai pas besoin de créer manuellement un script SQL dans le code ... pour l'info de tout le monde (au cas où vous ne seriez pas familier), la méthode générée demande deux paramètres (comme prévu), un pour [Créé par] et un pour [ID groupe] ... à partir de maintenant, s'il vous plaît référez-vous à mon problème que j'ai posté ci-dessus. : D

+0

Pouvez-vous fournir un exemple de schéma et des données pour vous aider à recréer ce scénario? De plus, quel code utilisez-vous pour transmettre ces paramètres? – PinnyM

+0

Ne pouvez-vous pas faire juste 'WHERE [Créé par] = @ CreatedBy' et faire un' Parameters.AddWithValues ​​(@parameter name, @parameter value); '..? – MethodMan

+0

@DJKRAZE pense que le code pourrait être généré automatiquement. – Amitd

Répondre

0

Je pense que c'est un bug IDE. Plus précisément, vous avez deux paramètres param1 et param2 dans cet ordre. Vous penseriez que le "?" les espaces réservés sont dans le même ordre mais lorsque vous exécutez la requête et que l'EDI vous demande de remplir des valeurs, le dernier "?" est le premier param (ID de cluster) et le premier (CreatedBy) est le second param. Cette image vous montre ce que je veux dire:

VS2012

Dans l'image, ID est la première ligne et le nombre de l'événement est la deuxième ligne, même si le TableAdaptor leur a comme événement et compte d'abord ID seconde. Je n'ai pas essayé de passer les params via un programme mais il semble que ce soit un bug que l'IDE fonctionnerait de cette façon.

Questions connexes