Variable nicht deklariert?

Desastermaster

Grünschnabel
Hallo zusammen,

ich habe da ein Problem mit der Übergabe einer Variable über die URL.

Bei folgendem Quelltext

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Provider=SQLOLEDB;Data Source=SERVER-SQL;Persist Security Info=True;Password=****;User ID=****;Initial Catalog=p2plustest"
SelectCommand="SELECT DISTINCT AUFTRAG.AUFTRAG, AUFTRAG.ADRESSE, ADRESSE.FIRMA, ADRESSE.FIRMA1, ADRESSE.STRASSE, ADRESSE.LAND, ... FROM ADRESSE INNER JOIN AUFTRAG ON ADRESSE.ADRESSE = AUFTRAG.ADRESSE ... WHERE (AUFTRAG.AUFTRAG = @auftrag) AND (AUFTRAGPOS.STATUS < 7)" ProviderName="System.Data.OleDb">
<SelectParameters>
<asp:QueryStringParameter Name="auftrag" QueryStringField="auftrag" Type="String" />
</SelectParameters>
</asp:SqlDataSource>


bekomme ich folgende Fehlermeldung:

System.Data.OleDb.OleDbException: Die Variable '@auftrag' muss deklariert werden.

Der Wert wird allerdings in der URL übergeben. Der Seitenaufruf sieht so aus:

http://dat1002/p2plus-f20/neue_seiten/dispo-packschein.aspx?auftrag=02022092


Hat jemand eine Ahnung, woran das liegen könnte?
Ich wäre sehr dankbar, wenn ihr mir schnell helfen könntet, da das Projekt mitlerweile überfällig ist.

Danke im Vorraus
Olli
 

Norbert Eder

Erfahrenes Mitglied
Pass deinen Code einmal an folgenden Code an:
Code:
<asp:SqlDataSource
    id="SqlDataSource1"
    runat="server"
    ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
    SelectCommand="SELECT LastName FROM Employees WHERE Title = @Title">
    <SelectParameters>
        <asp:ControlParameter Name="Title" ControlId="DropDownList1" PropertyName="SelectedValue"/>
    </SelectParameters>
</asp:SqlDataSource>
 

Desastermaster

Grünschnabel
Hallo Norbert,

danke für die schnelle Antwort.

Ich hab' mich gerade mal ein bißchen durch's controlparameter gelesen...
ist es nicht so, daß man damit nur die Werte von Steuerelementen auslesen kann?
Wie kann ich denn damit den Wert aus der URL auslesen?


Gruß
Olli
 

Desastermaster

Grünschnabel
Hallo Norbert,
Ich hab' das Problem nun gelöst.

Man muß in OLE-DB Verbindungen die Variablen im SELECT mit ? angeben, habe deshalb auf den nativen SQL-Treiber umgestellt.


Für alle, die es interessiert, hier der Code:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=SERVER-SQL;Initial Catalog=p2plustest;Persist Security Info=True;User ID=******;Password=******"
SelectCommand="SELECT DISTINCT AUFTRAG.AUFTRAG, AUFTRAG.ADRESSE, ADRESSE.FIRMA, ADRESSE.FIRMA1, ADRESSE.STRASSE, ADRESSE.LAND, ADRESSE.PLZ, ADRESSE.ORT, AUFTRAGPOS.TERMIN, AUFTRAGPOS.ARTIKEL, ARTIKEL.NAME, AUFTRAGPOS.MENGE, ... FROM ADRESSE INNER JOIN AUFTRAG ON ADRESSE.ADRESSE = AUFTRAG.ADRESSE INNER JOIN AUFTRAGPOS ON AUFTRAG.AUFTRAG = AUFTRAGPOS.AUFTRAG ... WHERE (AUFTRAG.AUFTRAG = @auftrag) AND (AUFTRAGPOS.STATUS < 7)" ProviderName="System.Data.SqlClient">
<SelectParameters>
<asp:QueryStringParameter Name="auftrag" QueryStringField="auftrag" Type="String" />
</SelectParameters>
</asp:SqlDataSource>


Dein Beispiel war also richtig, ich mußte nur mit der Nase noch auf die richtige Stelle gestoßen werden.
Danke.

Gruß
Olli