![]() |
suchen eines bestimmten wertes in interbase datenbank
hallo leute,
ich hab da ein problem den wert des primary keys in einer datentabelle zu finden. ich suche den wert der ID fuer ein bestimmtes feld in dem der name = einem suchstring ist. ich hab dazu bisher folgendes
Delphi-Quellcode:
ich rufe die procedure mit
procedure TOpenProj.ExecIBSQL(ASQL: String;var Pid:integer);
begin with FDB.SQL_PROJEKT do try if not FDB.TR_FARce.InTransaction then FDB.TR_FARce.StartTransaction else if Open then Close; SQL.Clear; SQL.Add(ASQL); ExecQuery; Transaction.Commit; except Transaction.Rollback; end; Pid:= ?????? end;
Delphi-Quellcode:
auf
ExecIBSQL(vSQL,gpid);
der uebergebene sql string setzt sich zusammen aus
Delphi-Quellcode:
mein prob ist das ich nicht weiss wie ich nach dem execquery die gesuchte ID in die variable Pid schreiben kann.
vSQL := 'SELECT ID FROM PROJEKT WHERE NAME=:'+listboxprojects.Items.Strings[ListBoxProjects.ItemIndex];
koennt ihr mir da vielleicht n tip geben?? gruesse Grumble :coder: |
Hallo,
eine kleine Verständnisfrage vorweg: Was soll der Doppelpunkt in "... NAME=:'+..." bewirken. So werden eigentlich Parameter in einem SQL-Statment eingeleitet. Eigentlich müsste Deine Abfrage immer eine leere Menge liefern. Jetzt die Antwort: PID:=IBSQL.FieldByName(ID).AsInteger; Damit das klappt bzw. eindeutig ist, darf Deine Abfrage garantiert nur einen Datensatz liefern. Wenn die Abfrage mehr als einen Datensatz liefert, musst Du Dich für einen entscheiden. Über Resultsets mit mehreren Datesätzen kannst Du wie folgt iterieren
Delphi-Quellcode:
While Not IBSQL1.EOF do
begin // Hier irgendetwas machen IBSQL1.Next; end; |
hallo jens,
danke fuer die antwort ich werd das = mal ausprobieren, dass mehrere gleiche namen auftauchen hab ich beim hinzufuegen von datensaetzen schon ausgeschlossen. zum : in '...name=:' ich habe leider keine ahnung wie solche sql statements aussehen muessen, ich hab das mir mehr oder weniger aus der eigenschaft sql in der tibsql komponente zusammengereimt du meinst also der : muss weg? ich probiers :) gruesse Grumble :coder: |
Zitat:
Ach ja bei PID:=IBSQL.FieldByName('ID').AsInteger; habe ich oben die ' vergessen |
ich habs probiert, leider funzt beides nicht
mit : bekomm ich eine 0 zurueck obwohl ich weiss des es eine 7 sein muss, ohne : bekomm ich eine exception , die besagt, dass der ueberwiesene string nicht als column in der tabelle steht mach ich vielleicht generell was falsch bei der abfrage? gruesse Grumble :coder: |
Hallo,
wenn das Feld Name vom Type Char oder VarChar usw. ist, dann muss der SQL so lauten: SELECT ID FROM PROJEKT WHERE NAME="'+listboxprojects.Items.Strings[ListBoxProjects.ItemIndex]+'"'; |
hallo,
habs probiert, ich bekomm immer noch die 0 raus, :( das feld name ist varchar Grumble :coder: |
hallo, :oops:
sorry es klappt doch, ich hab da was mit den vielen ''''''' verhaun :) vielen dank! gruesse Grumble :coder: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz