Registriert seit: 26. Jan 2005
61 Beiträge
|
Re: if anweisung
15. Jul 2005, 08:46
Eine eher "gewagte" Lösung wäre z.B.: (müsste funktionieren, da ja dieselbe Anzahl Datensätze als Ergebnis kommen müssten -> gleiche Tabelle -> gleiche Bedingung)
Delphi-Quellcode:
var
agewvo, agewvu, agewho,
agewhu, egewvo, egewvu,
egewho, egewhu, agewscheibe,
egewscheibe: Float;
begin
with DataModule1 do
begin
Query1.SQL.Clear;
Query1.SQL.Text := selectsql(' Anfangsgewicht_Belag_vorne_oben, Anfangsgewicht_Belag_vorne_unten, Anfangsgewicht_Belag_hinten_oben, Anfangsgewicht_Belag_hinten_unten, Endgewicht_Belag_vorne_oben, Endgewicht_Belag_vorne_unten, Endgewicht_Belag_hinten_oben, Endgewicht_Belag_hinten_unten', ' Friktionstest',
' Testnummer=' + frmtestauswahl.cbotestnummer.Text, ' ', ' ');
Query1.Open;
query2.SQL.Clear;
Query2.SQL.Text := selectsql(' Anfangsgewicht_Scheibe,Endgewicht_Scheibe', ' Friktionstest',
' Testnummer=' + frmtestauswahl.cbotestnummer.Text, ' ', ' ');
Query2.Open;
while not Query1.Eof do
begin
agewvo := (Query1.FieldsByName[' Anfangsgewicht_Belag_vorne_oben'].AsFloat);
agewvu := (Query1.FieldsByName[' Anfangsgewicht_Belag_vorne_unten'].AsFloat);
agewho := (Query1.FieldsByName[' Anfangsgewicht_Belag_hinten_oben'].AsFloat);
agewhu := (Query1.FieldsByName[' Anfangsgewicht_Belag_hinten_unten'].AsFloat);
egewvo := (Query1.FieldsByName[' Endgewicht_Belag_vorne_oben'].AsFloat);
egewvu := (Query1.FieldsByName[' Endgewicht_Belag_vorne_unten'].AsFloat);
egewho := (Query1.FieldsByName[' Endgewicht_Belag_hinten_oben'].AsFloat);
egewhu := (Query1.FieldsByName[' Endgewicht_Belag_hinten_unten'].AsFloat);
agewscheibe := (Query2.FieldsByName[' Anfangsgewicht_Scheibe'].AsFloat);
egewscheibe := (Query2.FieldsByName[' Endgewicht_Scheibe'].AsFloat);
if ((agewvo = 0.00) and (agewvu = 0.00) and (agewho = 0.00) and (agewhu = 0.00) and (egewvo = 0.00) and (egewvu = 0.00) and (egewho = 0.00) and (egewhu = 0.00) and (agewscheibe = 0.00) and (egewscheibe = 0.00)) then
begin
Showmessage(' Es gibt keine Werte für diese Testnummer');
//ShowMessage(Query.SQL.Text);
end
else
begin
lblbelagverschleiss.Caption := FloatToStr((agewvo + agewvu + agewho + agewhu) - (egewvo + egewvu + egewho + egewhu));
lblscheibeverschleiss.Caption := FloatToStr(agewscheibe + egewscheibe);
end;
Query1.Next;
query2.Next;
end;
Query1.Close;
Query2.Close;
end;
Aber besser wäre alles in einem... (das mit den 255 Zeichen versteh ich auch net...hab auch SQL-Abfragen mit mehr Zeichen )
Delphi-Quellcode:
var
agewvo, agewvu, agewho,
agewhu, egewvo, egewvu,
egewho, egewhu, agewscheibe,
egewscheibe: Float;
begin
with DataModule1 do
begin
Query.SQL.Clear;
Query.SQL.Text := selectsql(' Anfangsgewicht_Belag_vorne_oben, Anfangsgewicht_Belag_vorne_unten, Anfangsgewicht_Belag_hinten_oben, Anfangsgewicht_Belag_hinten_unten, Endgewicht_Belag_vorne_oben,
Endgewicht_Belag_vorne_unten,' + ' Endgewicht_Belag_hinten_oben, Endgewicht_Belag_hinten_unten,Anfangsgewicht_Scheibe,Endgewicht_Scheibe',
' Friktionstest', ' Testnummer=' + frmtestauswahl.cbotestnummer.Text, ' ', ' ');
Query.Open;
while not Query.Eof do
begin
agewvo := ( Query.FieldsByName[' Anfangsgewicht_Belag_vorne_oben'].AsFloat);
agewvu := ( Query.FieldsByName[' Anfangsgewicht_Belag_vorne_unten'].AsFloat);
agewho := ( Query.FieldsByName[' Anfangsgewicht_Belag_hinten_oben'].AsFloat);
agewhu := ( Query.FieldsByName[' Anfangsgewicht_Belag_hinten_unten'].AsFloat);
egewvo := ( Query.FieldsByName[' Endgewicht_Belag_vorne_oben'].AsFloat);
egewvu := ( Query.FieldsByName[' Endgewicht_Belag_vorne_unten'].AsFloat);
egewho := ( Query.FieldsByName[' Endgewicht_Belag_hinten_oben'].AsFloat);
egewhu := ( Query.FieldsByName[' Endgewicht_Belag_hinten_unten'].AsFloat);
agewscheibe := ( Query.FieldsByName[' Anfangsgewicht_Scheibe'].AsFloat);
egewscheibe := ( Query.FieldsByName[' Endgewicht_Scheibe'].AsFloat);
if ((agewvo = 0.00) and (agewvu = 0.00) and (agewho = 0.00) and (agewhu = 0.00) and (egewvo = 0.00) and (egewvu = 0.00) and (egewho = 0.00) and (egewhu = 0.00) and (agewscheibe = 0.00) and (egewscheibe = 0.00)) then
begin
Showmessage(' Es gibt keine Werte für diese Testnummer');
//ShowMessage(Query.SQL.Text);
end
else
begin
lblbelagverschleiss.Caption := FloatToStr((agewvo + agewvu + agewho + agewhu) - (egewvo + egewvu + egewho + egewhu));
lblscheibeverschleiss.Caption := FloatToStr(agewscheibe + egewscheibe);
end;
Query.Next;
end;
Query.Close;
end;
|