AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Hilfe, ich ahb ein Problem mit einer Query und Edit-Feld
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe, ich ahb ein Problem mit einer Query und Edit-Feld

Ein Thema von tylix · begonnen am 26. Mär 2004 · letzter Beitrag vom 26. Mär 2004
Antwort Antwort
tylix

Registriert seit: 9. Dez 2003
Ort: Sauerlach
40 Beiträge
 
Delphi 5 Enterprise
 
#1

Hilfe, ich ahb ein Problem mit einer Query und Edit-Feld

  Alt 26. Mär 2004, 15:22
Hi Leute,

ich hab ein sau blödes Problem.

Ich hab eine DB-connect auf eine ADABAS DB.
Die untere Abfrage funktioniert soweit.

Nur habe ich folgendes Problem, im Formular habe ich ein Edit-Feld.
In dieses Edit - Feld tippe ich das gewünschte Datum ein.

Ich weiß jetzt nicht, wie ich den edit - Text in das SQL-Statement einbauen muss, und die Klammern setzen muss.
Ich steh wie vor einer Wand. Mein Kopf raucht und alles grübeln hilft nix.
Könnt ihr mir bitte helfen.



Code:
dm.qry_akti2_selektieren.sql.clear;
dm.qry_akti2_selektieren.sql.add ('SELECT Dbadmin_person.ID ');
dm.qry_akti2_selektieren.sql.add (' FROM DBADMIN.PERSON Dbadmin_person, DBADMIN.BOGEN Dbadmin_bogen');
dm.qry_akti2_selektieren.sql.add (' WHERE (Dbadmin_person.ID = Dbadmin_bogen.PER_ID)');
dm.qry_akti2_selektieren.sql.add (' and dbadmin_bogen.status = 1');
dm.qry_akti2_selektieren.sql.add (' and dbadmin_person.sperre not in (''1'',''02'',''03'',''04'',''05'',''06'')');
dm.qry_akti2_selektieren.sql.add (' and dbadmin_person.id not in ');
dm.qry_akti2_selektieren.sql.add ('(select ID FROM DBADMIN.PERSON Dbadmin_person, DBADMIN.MERKMALE Dbadmin_merkmale where dbadmin_person.id = dbadmin_merkmale.mer_pad_id and dbadmin_merkmale.mer_merkmal = ''002'' and dbadmin_merkmale.mer_dat = [b][u][color=red]''2004-03-05''[/color][/u][/b])'); [b][color=red] <------ Dieses Datum soll durch den Edit.text ersetzt werden. [/color][/b]
dm.qry_akti2_selektieren.open;

Ist doch echt zum

Dank euch

[edit=Sharky]Tags gesetzt Mfg, Sharky[/edit]
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Hilfe, ich ahb ein Problem mit einer Query und Edit-Feld

  Alt 26. Mär 2004, 15:50
Also ersteinmal...
Zitat von tylix:
Ist doch echt zum
... sowas gehört hier nun wirklich nicht hin

Du hattest Delphi code gepostet, nicht SQL. Außerdem fehlt der End tag. Kannst du bitte vor deinen code ein [ delphi ] und danach [ /dephi ] tippen (ohne Leerzeichen)?

Wenn du deinem Statement veränderliche Werte übergeben willst, dann gehören die in einen Parameter.

Bei Datumsfeldern ist das absolute Pflicht!!!

Ich weiß nicht, wie oft ich das noch predigen muss...
Es ist doch total blauäugig anzunehmen, dass DB und Windows das gleiche Format zur implizierten Umwandlung von Text zu Datum (und andersherum) verwenden!
Packe das Ganze in eine SQL Variable (Parameter), der du den Typ Date gibst. Erst dann hat die DB keine Möglichkeit das Datum falsch zu interpretieren.
Standardfehler ist z. Bsp. die Vertauschung von Monat und Tag.

Als Eingabefeld für das Datum bietet sich ein DateTimePicker an.


Die Abfrage würde dann etwa so aussehen:

Delphi-Quellcode:
  With DM.Qry_Akti2_Selektieren Do
  Begin
    SQL.Text :=
      'SELECT Person.ID' + #10 +
      'FROM DBAdmin.Person Person, DBAdmin.Bogen Bogen' + #10 +
      'WHERE (Person.ID = Bogen.PER_ID) And Bogen.status = :i_BogenStatus And' + #10 +
      ' Person.Sperre Not In (''01'', ''02'', ''03'', ''04'', ''05'', ''06'') And' + #10 +
      ' Person.ID Not In' + #10 +
      ' SELECT ID' + #10 +
      ' FROM DBAdmin.Person s_Pers, DBAdmin.Merkmale Merkm' + #10 +
      ' WHERE s_Pers.ID = Merkm.Mer_Pad_ID And Merkm.mer_merkmal = :i_MerkMal And' + #10 +
      ' Merkm.Mer_Dat = :i_MerkDat)';
    // Parse Statement um Variablen zu erkennen
    Prepared := True;
    // Parameterzuweisung
    With Parameters Do
    Begin
      ParamByName('i_BogenStatus').Value := 1;
      ParamByName('i_MerkMal').Value := '002';
      ParamByName('i_MerkDat').DataType := ftDate;
      ParamByName('i_MerkDat').Value := IgendeinDateTimePicker.Date;
    End;
  End;
  // Ausführen
  Open;
  Mit Zitat antworten Zitat
tylix

Registriert seit: 9. Dez 2003
Ort: Sauerlach
40 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Hilfe, ich ahb ein Problem mit einer Query und Edit-Feld

  Alt 26. Mär 2004, 16:00
hi robert_g:

schon klar, bischen im wort vergriffen.

Gibts da nicht noch ne andere möglichkeit?

Gruß


Robert
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Hilfe, ich ahb ein Problem mit einer Query und Edit-Feld

  Alt 26. Mär 2004, 17:27
Was gefällt dir daran nicht?
Ich werde das Datumsproblem nicht 2 mal im gleichen Thread erklären. Der einzige vernünftige Weg ist ein Parameter (der EINZIGE! ).

Das SELECT-Statement habe ich noch etwas bereinigt, ich hatte beim ersten Post nur per search 'n replace die überlangen Tabellenaliase verändert und das Ganze durch einen Source formatter gejagt.
Die Personentabelle ist in deinem SubSELECT völlig unnütz, denn Mer_Pad_ID = Person.ID.
Außerdem glaube ich nicht, dass Person.Sperre ein Stringfeld ist (wenn sie nicht numerisch ist hapert es gewaltig am DB Design).

Das veränderte Statement:
Delphi-Quellcode:
    ...
    SQL.Text :=
      'SELECT Person.ID' + #10 +
      'FROM DBAdmin.Person Person, DBAdmin.Bogen Bogen' + #10 +
      'WHERE (Person.ID = Bogen.PER_ID) And Bogen.status = 1 And' + #10 +
      ' Person.Sperre Not In (1, 2, 3, 4, 5, 6) And' + #10 +
      ' Person.ID Not In' + #10 +
      ' SELECT Mer_Pad_ID' + #10 +
      ' FROM DBAdmin.Merkmale Merkm' + #10 +
      ' WHERE Merkm.mer_merkmal = :i_MerkMal And' + #10 +
      ' Merkm.Mer_Dat = :i_MerkDat)';
      ...
  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 22:32 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