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 Formular

    object 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!!!


Anmelden zum Antworten