Thema: if anweisung

Einzelnen Beitrag anzeigen

Benutzerbild von Duke_2004
Duke_2004

Registriert seit: 26. Jan 2005
61 Beiträge
 
#16

Re: if anweisung

  Alt 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;
  Mit Zitat antworten Zitat