AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL ANweisung liefert leere Datenmenge

SQL ANweisung liefert leere Datenmenge

Ein Thema von Moony · begonnen am 3. Mär 2009 · letzter Beitrag vom 4. Mär 2009
Antwort Antwort
Seite 4 von 4   « Erste     234
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#31

Re: SQL ANweisung liefert leere Datenmenge

  Alt 4. Mär 2009, 15:09
Hallo,

um mal zu den Parametern zu kommen:

Delphi-Quellcode:
with Query do
begin
  SQL.Clear;
  SQL.Add('Select * From Stammdaten');
  SQL.Add('Where Name=:Name');
  ParamByName('Name').AsString:= 'Juhu';
  Open;
  try
    if QueryIsNotEmpty ...
  finally
    Close;
  end;
end;
sieht hübsch aus, keine blödes ""

und nun weiter


Delphi-Quellcode:
with Query do
begin
  SQL.Clear;
  SQL.Add('Select * From Stammdaten');
  SQL.Add('Where Datum=:TheDate');
  ParamByName('TheDate').AsDateTime:= EncodeDate(2009,3,4);
  Open;
  try
    if QueryIsNotEmpty ...
  finally
    Close;
  end;
end;
Das Datum wird auf jeden Fall korrekt übergeben,
egal wie es intern gespeichert wird.

Ein weiterer Vorteil, Prepare.

Delphi-Quellcode:
with Query do
begin
  SQL.Clear;
  SQL.Add('Select * From Stammdaten');
  SQL.Add('Where Name=:Name');
  Prepare;
  for i:= 1 to 5 do
  begin
    ParamByName('Name').AsString:= 'Juhu'+IntToStr(i);
    Open;
    try
      if QueryIsNotEmpty ...
    finally
      Close;
    end;
  end;
end;
Die Query muss nur 1 mal prepared werden (das dauert je nach Komplexität der Query etwas),
wird dann 5mal mit unterschiedlichen Parametern benutzt.
Je nach DB bringt das ne Menge Geschwindigkeit (unter Firebird bei mir + 50%)


Noch mal zu PK kenne ich nicht, Indexfeld auch nicht.
Den PK bekommt man u.U. raus (steht in den System-Tabellen)

Um Änderungen an einem Datensatz zu erkennen, deen Felder du erst zur Laufzeit kennst,
dessen DB du auch erst zur Laufzeit kennst, dessen DB-Struktur du nicht ändern kannst
-> gute Nacht.

Ne, im Ernst.

Schau dir mal das NULL-Tutorial unter ibphoenix.com an,
ist nicht so einfach.

Ich würde viell. den Datensatz des PK (er muss da sein !!!)
komplett laden und mit dem alten (vorher sichern) vergleichen.




Heiko
Heiko
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#32

Re: SQL ANweisung liefert leere Datenmenge

  Alt 4. Mär 2009, 17:30
Aber woher soll ich wissen welches Feld welchen Typ hat? Ich muß doch einmal alle Felder auslesen und bei jedem Feld den Typ erfragen. Nur dann kann ich doch die Parameter füllen.

Was macht die Funktion Prepare? Denn beim TADODataSet gibts diese Funktion nicht.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.198 Beiträge
 
Delphi 10.4 Sydney
 
#33

Re: SQL ANweisung liefert leere Datenmenge

  Alt 4. Mär 2009, 17:37
Zitat von Moony:
Aber woher soll ich wissen welches Feld welchen Typ hat?
Wie willst du überhaupt wissen ob für ein Feld dessen Typ du nicht kennst ein "=" anwendbar ist? Schon mal probiert auf eine (n)text-Feld bei MS SQL Server eine "=" anzuwenden? Freu dich auf die Fehlermeldung ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#34

Re: SQL ANweisung liefert leere Datenmenge

  Alt 4. Mär 2009, 18:22
Hallo,

was du willst, geht einfach nicht.
Akzeptier es einfach.
Du musst schon irgendwas über die DB/Tabelle wissen.

Die Datentypen einer Tabelle stehen in den System-Tabellen
der jeweiligen Datenbank.
Es gibt aber keine einheitliche regelung.
Da macht jeder DB-Hersteller, was er will.


Heiko
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz