2010-02-11 4 views
1

Je travaille en winforms avec C#. Heres mon codeDébogage de requêtes SQL requis

query = "SELECT max(Appointment_Time) FROM Appointments WHERE (Appointment_Status = 'D')"; 
dset = db.GetRecords(query,"Appointments"); 
ctime_Label.Text = dset.Tables["Appointments"].Rows[0]["Appointment_Time"].ToString(); 

db.GETRecords est une fonction de la classe qui me fournit sql-services, il suffit de me renvoie un ensemble de données. Je continue à obtenir l'erreur « la colonne doesnot « Appointment_Time » appartiennent aux rendez-vous de table » qui est stupide cuz

  • quand je suis les valeurs de son insérez fines de travail.
  • quand je ne suis pas en utilisant max (Appointment_Time) la fonction est fonctionne bien

wha est le problème ici .. Je pense qu'il ya quelque chose à voir avec la fonction max(). Toute suggestion ou alternative pour cela

Répondre

2

Exécutez la requête dans SQL Server et voyez ce que vous obtenez.

Essayez maintenant:

SELECT max(Appointment_Time) as A_Time FROM Appointments WHERE (Appointment_Status = 'D')"; 

puis

ctime_Label.Text = dset.Tables["Appointments"].Rows[0]["A_Time"].ToString(); 
6

Lorsque vous appliquez une fonction dans la clause SELECT, le serveur doit choisir un nom pour la colonne résultante, ce qui reflète généralement ce que la fonction fait - quelque chose comme max(Appointment_Time). Les champs utilisés comme arguments de la fonction semblent être 'cachés'. C'est pourquoi le champ Appointment_Time n'est pas visible pour le code appelant dans votre cas.

Vous devez spécifier ce que vous voulez que le champ agrégé à appeler dans le SQL en utilisant AS, .: par exemple

SELECT max(Appointment_Time) AS Max_Appointment_Time 
FROM Appointments WHERE (Appointment_Status = 'D') 

ensuite référence au champ comme Max_Appointment_Time dans le code d'appel. Vous pouvez utiliser le même nom que le champ source si vous le souhaitez.

+0

thnx pour vous aussi garçon .. j'ai choisi le PAPS premier arrivé, servir poing – Moon