![]() |
Datenbank: Advantage • Version: 8.1 • Zugriff über: sql
Sql-Befehl anpassen
Also meine Datenbank besitzt 2 Tabellen. Ich hab nun eine Funktion erstellt, die die ID hcohzählen soll.
Delphi-Quellcode:
das funktioniert auch so wie es soll. Nur das Problem ist das sich der Sql-Befehl nur auf die AdressTabelle bezieht.
function tFormMain.MaxID : Integer ;
var lMax : Integer ; begin qu.Close ; qu.SQL.Clear ; qu.SQL.Add('Select max(ID) as MaxID from Adressen ') ; lMax := qu.FieldByName('MaxID').AsInteger; qu.Open ; Result := lMax ; end; Und nun wollte ich fragen, ob jemand weiß wie man den Befehl so umändern kann, dass er sich irgentwie von selbst die richtige Tabelle sucht. Danke schonmal im voraus :) |
AW: Sql-Befehl anpassen
Hallo,
kann es sein, dass du den Wert ausliest, bevor du deine Query öffnest? Ansonsten führe die Query doch 2 mal hintereinander auf beide Tabellen aus und speichere den Wert in 2 verschiedenen Variablen. Viele Grüße ... |
AW: Sql-Befehl anpassen
Die Funktion zählt keine ID hoch, sondern liest nur die höchste aus.
Delphi-Quellcode:
Ungetestet, sollte aber funktionieren.
function tFormMain.MaxID(const Tablename, KeyField: string): Integer ;
begin qu.Close ; qu.SQL.Text := Format('Select max(%s) as MaxID from %s', [KeyField, Tablename]) ; qu.Open ; Result := qu.FieldByName('MaxID').AsInteger; end; |
AW: Sql-Befehl anpassen
oh stimmt..
du meinst so oder?
Delphi-Quellcode:
aber es hatte so ja funktioniert.
function tFormMain.MaxID : Integer ;
var lMax : Integer ; begin qu.Close ; qu.SQL.Clear ; qu.SQL.Add('Select max(ID) as MaxID from Adressen ') ; qu.Open ; lMax := qu.FieldByName('MaxID').AsInteger; Result := lMax ; end; Ich wollte wohl den Befehl 'Select max(ID) as MaxID from Adressen ' so anpassen, das er sich irgentwie selber die passenden tabelle sucht. Falls das geht oder wie man das halt sonst machen könnte. Er soll mir ja auch nur die höchste id ausgeben, sorry :? |
AW: Sql-Befehl anpassen
Öhm, du machst das ganze sehr kompliziert ;) Wenn du den Text setzt, dann brauchst du kein Clear und anschließendes Add, da der Text so direkt ersetzt wird. Die Variable lMax brauchst du auch nicht, da du dich innerhalb einer Funktion befindest und somit die Variable Result zur Verfügung steht.
Und bzgl. dem variablen Tabellenname: Schau dir DeddyH's Funktion mal genauer an ;) |
AW: Sql-Befehl anpassen
Zitat:
Bernhard |
AW: Sql-Befehl anpassen
Wenn es darum geht eine ID hoch zu zählen warum nutzt Du keinen Counter/Sequence?
Die würden die ID automatisch generieren? Gruß K-H |
AW: Sql-Befehl anpassen
Oder war die Frage so zu verstehen, dass die Maximale ID von beiden Tabellen ermittelt werden soll, quasi das Maximum, von den beiden Maxima?
|
AW: Sql-Befehl anpassen
Nein, die funktion ermittelt die maximale id der tabelle.
also kann man eine funktion nicht so aufbauen, das sie je nachdem die höchste id von adresse oder kontakte ermittelt? Das heißt dann jawohl mal 2 functionen :) |
AW: Sql-Befehl anpassen
Du kannst den Tabellennamen an die Funktion als Parameter übergeben und diesen in das SQL übernehmen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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-2025 by Thomas Breitkreuz