Problem mit mySQLQuery und Params
-
Hallo!
Ich habe eine mySQLQuery Komponente auf meinem Formular. Darin habe ich 6 Parameter unter Params gespeichert.
Wenn ich aber jetzt auf die zugreifen will, entweder mit ParamByName oder Params->Items[1] dann gibts ne Fehlermeldung "Listenindex überschreitet Maximum" oder "Parameter <Name> nicht gefunden"Was mache ich falsch??
-
Grundsätzlich, dass Du keinen Quellcode postet; aber auch, dass Du auf irgendwelche Elemente (Items[]) zugreift, die nicht existieren.
-
Hallo
Was du falsch machst, sagt doch die Fehlemeldung sehr genau : Wenn du versuchst mit einem Index auf einen Parameter zuzugreifen, dann ist der Index außerhalb der Anzahl der vorhandenen Elemente. Wenn du versuchst mit einem Namen auf einen Parameter zuzugreifen, dann gibt es keinen Parameter diesen Namens.
Mehr können wir zu deinen Informationen nicht sagen.bis bald
akari
-
ja aber es gibt ja diese Parameter!
Hier mal der Code vom Formularobject mySQLQuery1: TmySQLQuery Database = mySQLDatabase1 Left = 128 Top = 120 ParamData = < item DataType = ftString Name = 'Usernr' ParamType = ptInputOutput Value = 0 end item DataType = ftString Name = 'User' ParamType = ptInputOutput Value = '' end item DataType = ftString Name = 'Passwort' ParamType = ptInputOutput Value = '' end item DataType = ftInteger Name = 'Erlaubt' ParamType = ptInputOutput Value = 0 end item DataType = ftInteger Name = 'Dispo' ParamType = ptInputOutput Value = 0 end item DataType = ftInteger Name = 'anzahl' ParamType = ptInputOutput Value = 0 end> end
Und hier wie ich drauf zugreifen will.
mySQLQuery1->SQL->Clear(); mySQLQuery1->SQL->Add("INSERT INTO Userdaten (Usernr, User, Passwort, Erlaubt, Dispo) "); mySQLQuery1->SQL->Add("VALUES (:Usernr, :User, :Passwort , :Erlaubt, :Dispo) "); anzahl = mySQLQuery1->Params->Items[5]->AsInteger; mySQLQuery1->ParamByName("Usernr")->AsInteger = anzahl+1; mySQLQuery1->ParamByName("User")->AsString = Edit1->Text; mySQLQuery1->ParamByName("Passwort")->AsString = Edit2->Text; mySQLQuery1->ParamByName("Erlaubt")->AsInteger = CheckBox1->Checked; mySQLQuery1->ParamByName("Dispo")->AsInteger = CheckBox2->Checked; mySQLQuery1->ExecSQL();
-
Nur mal so eine Idee: Bist Du Dir sicher dass mysql-Parameter im SQL-String mit ':' eingeführt werden? Sollte es nicht ein Fragezeichen sein?
...VALUES (?Usernr, ?User, ?Passwort ...
-
nein soweit ich weiß mit ":", so steht es auch in der Hilfe
-
Wie ist TSQLQuery::ParamCheck eingestellt? Muss ja auf false stehen, damit die händisch eingetragenen Parameter erhalten bleiben, wenn die Anweisung geändert wird. Falls es auf true steht, kann das schon nicht funktionieren, weil 'anzahl' kein Parameter der Query ist.
Wobei ich mich sowieso Frage, was das mit dem Parameter 'anzahl' soll?
-
jetzt klappts!
Vielen Dank!!!