2017-05-19 5 views
0

Problème avec le 3ème SelectParameter n'étant pas reconnu dans l'instruction SQL: [UsersDataTbl.UID] NOT IN (SELECT UID FROM [EnrollmentsTbl] WHERE ClassName = ?) AND Completed = True J'ai aussi utilisé @ClassName et j'ai la même erreur: "Aucune valeur donnée pour un ou plusieurs paramètres requis."SelectParameter échoue en utilisant? ou @

Si je remplace le? avec "nom de classe réel", les résultats sont comme souhaité.

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
    DataSourceID="AccessDataSource2" DataTextField="ClassName" DataValueField="ClassName"> 
</asp:DropDownList>&nbsp; 

<asp:DropDownList ID="DropDownList3" runat="server" 
    DataSourceID="AccessDataSource4" DataTextField="Battallion" 
    DataValueField="Battallion" AutoPostBack="True"> 
</asp:DropDownList>&nbsp; 

<asp:DropDownList ID="DropDownList4" runat="server" 
    DataSourceID="AccessDataSource5" DataTextField="Shift" 
    DataValueField="Shift" AutoPostBack="True"> 
</asp:DropDownList>&nbsp; 

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
DataFile="<%$ ConnectionStrings:AccessSubSiteString %>" 
    SelectCommand="SELECT [UsersDataTbl.StudentID], [UsersDataTbl.UserName], 
    [UsersDataTbl.LastName], [UsersDataTbl.FirstName], [UsersDataTbl.Affiliation], [UsersDataCareerTbl.Battallion], [UsersDataCareerTbl.Shift], [UsersDataTbl.UID], [ALSProviders.ALS] 
    FROM ([UsersDataTbl] INNER JOIN [UsersDataCareerTbl] ON (UsersDataTbl.UID = UsersDataCareerTbl.UID)) LEFT JOIN [ALSProviders] ON (UsersDataTbl.UID = ALSProviders.UID) 
    WHERE [UsersDataTbl.Career] = True AND [UsersDataTbl.Active] = True AND (UsersDataCareerTbl.Battallion = ?) AND (UsersDataCareerTbl.Shift = ?) 
    AND ([UsersDataTbl.UID] NOT IN (SELECT UID FROM [EnrollmentsTbl] WHERE ClassName = ?) AND Completed = True) 
    ORDER BY [UsersDataTbl.LastName]"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="DropDownList3" Name="Battallion" PropertyName="SelectedValue" Type="String" /> 
     <asp:ControlParameter ControlID="DropDownList4" Name="Shift" PropertyName="SelectedValue" Type="String" /> 
     <asp:ControlParameter ControlID="DropDownList1" Name="ClassName" PropertyName="SelectedValue" Type="String" />   
    </SelectParameters> 
</asp:AccessDataSource> 
+0

Alors avez-vous un objet avec ID = "DropDownList1"? – Hogan

+0

Oui et le ddl est rempli avec les noms de classe. – BarclayVision

+0

Y a-t-il une valeur sélectionnée par défaut? – Hogan

Répondre

0

Merci à @Rafael pour la direction, en ajoutant le supplémentaire JOIN a semblé le réparer. Encore besoin de IS NULL. voici la résolution:

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
DataFile="<%$ ConnectionStrings:AccessSubSiteString %>" 
    SelectCommand="SELECT [UsersDataTbl.StudentID], [UsersDataTbl.UserName], [UsersDataTbl.LastName], [UsersDataTbl.FirstName], [UsersDataTbl.Affiliation], [UsersDataCareerTbl.Battallion], [UsersDataCareerTbl.Shift], [UsersDataTbl.UID], [ALSProviders.ALS] 
    FROM (([UsersDataTbl] INNER JOIN [UsersDataCareerTbl] ON (UsersDataTbl.UID = UsersDataCareerTbl.UID)) 
    LEFT JOIN [ALSProviders] ON (UsersDataTbl.UID = ALSProviders.UID)) 
    LEFT JOIN [EnrollmentsTbl] ON (UsersDataTbl.UID = EnrollmentsTbl.UID AND ClassName = ?) 
    WHERE [UsersDataCareerTbl.Battallion] = ? 
    AND [UsersDataCareerTbl.Shift] = ? 
    AND [EnrollmentsTbl.UID] IS NULL 
    ORDER BY [UsersDataTbl.LastName]"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="DropDownList3" Name="Battallion" PropertyName="SelectedValue" Type="String" /> 
     <asp:ControlParameter ControlID="DropDownList4" Name="Shift" PropertyName="SelectedValue" Type="String" /> 
     <asp:ControlParameter ControlID="DropDownList1" Name="ClassName" PropertyName="SelectedValue" Type="String" />   
    </SelectParameters> 
</asp:AccessDataSource>