Autor Beitrag
Josef-B
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: So 20.02.11 20:06 
Ich habe zwei TIBQuerys mit Firefird.

die erste Quni und die zweite q2 genannt.

Die Q2 ist ne Unterabfrage zu der ersten Quni (also eigentlich Master-Detail mit mehreren Schlüsseln.

mein Problem ist, dass das Feld "Liefer_anschrift" null-werte haben kann. In dem Fall
liefert die Abfrage Q2 keine Daten zurück.
Wenn ich den Integer-Wert 0 eintrage schon.

Auch die Zuweisung von

parambyname('Liefer_Anschrift').value := quni.FieldByName('Liefer_Anschrift').value;

bringt keine Änderung

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
with quni do
  begin
  close;
  if transaction.intransaction then transaction.commit;
  sql.text := 'select kunde, RE_ART, Liefer_Anschrift ,from vk_k
      where re is Null and Status = 6 
  open;
  first;
  end;
while not quni.eof do
  begin
  with q2 do
    begin
    close;
    if transaction.intransaction then transaction.commit;
    sql.text :=
       '
Select auftrag from VK_K where ' +
       '
(kunde = :kunde) and ' +
       '
(RE_ART = :RE_ART) and ' +
       '
(Liefer_Anschrift = :Liefer_Anschrift)
    parambyname('Kunde').asinteger := quni.fieldbyname('Kunde').asinteger;
    parambyname('RE_ART').asinteger := quni.fieldbyname('RE_ART').asinteger;
    parambyname('Liefer_Anschrift').asinteger := quni.FieldByName('Liefer_Anschrift').asinteger;
   open;


Auch die Zuweisung von

ausblenden Delphi-Quelltext
1:
2:
3:
parambyname('Liefer_Anschrift').value := quni.FieldByName('Liefer_Anschrift').value;

bringt keine Änderung
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: So 20.02.11 20:34 
Hallo...

unter anderem aus diesem Grund mag ich keine NULL Werte.

Versuch mal:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
parambyname('Liefer_Anschrift').asinteger := quni.FieldByName('Liefer_Anschrift').asinteger;

// ersetzen durch

if VarIsNull(quni.FieldByName('Liefer_Anschrift').asinteger) then
  parambyname('Liefer_Anschrift').asinteger := 0
else
  parambyname('Liefer_Anschrift').asinteger := quni.FieldByName('Liefer_Anschrift').asinteger;


:gruebel: wieso ist die Lieferanschrift ein Integer ? Laufende Nummer ?
Josef-B Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: Mo 21.02.11 09:57 
Hallo Hentschman,

danke für die schnelle Antwort.

Das funktioniert leider so auch nicht.

Ich hab mich jetzt entschlossen, den erstmal auch leichteren Weg zu gehen,
und lasse bei dem Feld keine Null-Werte mehr zu.

Scheint mir für die Abfrage auch sicherer zu sein, nicht dass nachher einige
Sätze "durchflutschen" ;-)