AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL-String vereinfachen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-String vereinfachen

Ein Thema von Privateer3000 · begonnen am 20. Aug 2008 · letzter Beitrag vom 21. Aug 2008
Antwort Antwort
GroHae

Registriert seit: 19. Apr 2007
Ort: Nabburg
83 Beiträge
 
Delphi 2007 Enterprise
 
#1

Re: SQL-String vereinfachen

  Alt 20. Aug 2008, 08:55
Hi,

ich bin mir nicht sicher, ob ich dich verstanden habe. Wenn ja willst du doch zur Laufzeit den SQL Befehl zusammenbauen. Oder?

Ich hatte mal vor lager Zeit ein ähnliches Problem und habe das so gelöst:


qryB2 : TQuery
edtXYZ : TEdit

Delphi-Quellcode:
      with qryB2 do
      begin
        S := GetSuchStr;
        if S = 'then Goto Ende;
        Close;
        SQL.Clear;
        SQL.Add(S);
        if edtSuchKtArt.Text <> 'then
          ParamByName('SuchKtArt').asString := edtSuchKtArt.Text;
        if edtSuchKonto.Text <> 'then
          ParamByName('SuchKonto').asString := edtSuchKonto.Text;
        if edtSuchBetrag.Text <> 'then
          ParamByName('SuchBetrag').asFloat := StrToFloat(edtSuchBetrag.Text);
        if edtSuchBelegNr.Text <> 'then
          ParamByName('SuchBelegnr').asString := edtSuchBelegnr.Text;
        ParamByName('VonDatum').asString := DateToStr(VonDatum);
        ParamByName('BisDatum').asString := DateToStr(BisDatum);

        Open;
        SetLength(lfBestand, RecordCount + 1);
      end; // von with qryB2 do

Delphi-Quellcode:
function TfrmMain.GetSuchStr: string;
var
  S : string;
  AddS2Aufrufe : integer;

  procedure AddS2(S2: string);
  begin
    Inc(AddS2Aufrufe);
    if S = 'SELECT * FROM B2then
      S := S + ' WHERE ';
    if S = 'SELECT * FROM B2 WHERE then
      S := S + '(' + S2 + ')'
    else
      S := S + ' AND (' + S2 + ')';
  end;

begin
  AddS2Aufrufe := 0;
  S := 'SELECT * FROM B2';
  if edtSuchKtArt.Text <> 'then
    AddS2('KTA2 = :SuchKtArt');
  if edtSuchKonto.Text <> 'then
    AddS2('KTN2 = :SuchKonto');
  if edtSuchBetrag.Text <> 'then
    if btbtnEUR.Visible then
      AddS2('BGB2 = :SuchBetrag')
    else
      AddS2('BGBT = :SuchBetrag');
  if edtSuchBelegNr.Text <> 'then
    AddS2('BLN1 = :SuchBelegNr');
  AddS2('BDA1 >= :VonDatum'); // 24.04.02 von BGDT auf BDA1 geändert
  AddS2('BDA1 <= :BisDatum'); // 24.04.02 von BGDT auf BDA1 geändert
  if chkbxSortieren.Checked then
    S := S + ' ORDER BY KTA2, KTN2, BDA1, BLN1';
  if AddS2Aufrufe <= 2 then
  begin
    ShowMessage('Suchbedingung ist unvollständig');
    S := '';
  end;
  result := S;
end;

Der Code ist nicht schön aber es klappt

Grüße

Thomas
Grüße

Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:16 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