AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

if anweisung

Ein Thema von cell · begonnen am 15. Jul 2005 · letzter Beitrag vom 15. Jul 2005
Antwort Antwort
Seite 1 von 3  1 23      
cell

Registriert seit: 5. Jul 2005
Ort: Ebensee
171 Beiträge
 
Delphi 4 Standard
 
#1

if anweisung

  Alt 15. Jul 2005, 08:01
hi hab ein problem mit der if anweisung
Delphi-Quellcode:
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','Friktionstest','Testnummer='  + frmtestauswahl.cbotestnummer.Text,'', '');
       Query.Open;
       while not Query.Eof do
       begin
            agewvo:=(Query.Fields[0].AsString);
            agewvu:=(Query.Fields[1].AsString);
            agewho:=(Query.Fields[2].AsString);
            agewhu:=(Query.Fields[3].AsString);
            egewvo:=(Query.Fields[4].AsString);
            egewvu:=(Query.Fields[5].AsString);
            egewho:=(Query.Fields[6].AsString);
            egewhu:=(Query.Fields[7].AsString);

       Query.SQL.Clear;
       Query.SQL.Text:= selectsql('Anfangsgewicht_Scheibe,Endgewicht_Scheibe','Friktionstest','Testnummer='+frmtestauswahl.cbotestnummer.Text,'','');
       Query.Open;
       
            agewscheibe:=(Query.Fields[0].AsString);
            egewscheibe:=(Query.Fields[1].AsString);

       if (agewvo ='') Or (agewvu ='') Or (agewho ='') Or (agewhu ='') Or (egewvo ='') Or (egewvu ='') Or (egewho ='') Or (egewhu ='') Or (agewscheibe='') Or (egewscheibe='') then
       begin
            Showmessage('Es gibt keine Werte für diese Testnummer');
            //ShowMessage(Query.SQL.Text);
            close;
       end
       else
       lblbelagverschleiss.Caption :=FloatToStr((StrToFloat(agewvo) + StrToFloat(agewvu) + StrToFloat(agewho) + StrToFloat(agewhu)) - (StrToFloat(egewvo) + StrToFloat(egewvu) + StrToFloat(egewho) + StrToFloat(egewhu)));
       lblscheibeverschleiss.Caption:=FloatToStr(StrToFloat(agewscheibe)+StrToFloat(egewscheibe));
            Query.Next;
            Query.Close;
       end;
     end;
auch wenn die werte = '' sind geht er mit in den satz mit lblscheibenverschleiß hinein und sagt mir eine Fehler meldung dass '' kein gültiger float wert ist
plz help
  Mit Zitat antworten Zitat
Benutzerbild von Duke_2004
Duke_2004

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

Re: if anweisung

  Alt 15. Jul 2005, 08:11
Sind auch wirklich alle Werte leer ?!?!?!

Da du nämlich or verwendest, geht er schon in den Else-Zweig wenn nur ein Wert nicht leer ist! Daher müsste es eigentlich "And" heißen, dann ist gewährleistet, dass kein Wert leer ist...

Ehrlich gesagt ist deine Konstruktion nicht sehr vorteilhaft... Vor allem nicht, wenn du (wie zu sehen ist) die Werte in Float konvertieren willst...
  Mit Zitat antworten Zitat
cell

Registriert seit: 5. Jul 2005
Ort: Ebensee
171 Beiträge
 
Delphi 4 Standard
 
#3

Re: if anweisung

  Alt 15. Jul 2005, 08:13
hab mir gedacht wenn ich AND sage, dann müssen alle werte leer sein
ja ich weiß dass ned wirklich vorteilhaft oder gut programmiert ist, aber ich kanns ned besser
  Mit Zitat antworten Zitat
Benutzerbild von Duke_2004
Duke_2004

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

Re: if anweisung

  Alt 15. Jul 2005, 08:15
Keine Angst...das kommt mir bekannt vor...ich hab nämlich auch so angefangen... Learning by doing...

Wenn du im Else-Zweig deine Werte in Float umwandelst, dann müssen auch alle String-Variablen eine Zahl enthalten, ansonsten kommt dieser Konvertierungfehler!

Eine Notlösung wäre den String-Variablen den Wert '0' zuzuweisen, bevor du ihnen einen anderen Wert gibst... Oder du nimmst Variablen vom Typ Float und machst Query.Fields[0].AsFloat -> is günstiger

Somit steht zumindest immer eine 0 drin...
  Mit Zitat antworten Zitat
Bart82

Registriert seit: 27. Aug 2004
24 Beiträge
 
Delphi 7 Professional
 
#5

Re: if anweisung

  Alt 15. Jul 2005, 08:17
Hallo,
wenn man OR schreibt, muss nur eine Bedingung erfüllt - sprich leer - sein, damit die "IF-Anweisung" ausgeführt wird. Sind alle nicht leer, so wird ELSE aufgerufen.
Carsten
Life's a piece of shit
when you look at it!
- Monty Python -
  Mit Zitat antworten Zitat
cell

Registriert seit: 5. Jul 2005
Ort: Ebensee
171 Beiträge
 
Delphi 4 Standard
 
#6

Re: if anweisung

  Alt 15. Jul 2005, 08:19
ja genau deshalb mach ich ja eine if anweisung die soll mir die leeren felder abfangen und eine fehlermeldung ausgeben
nur bei and springt er mir schon bei der zeile lblbelagverschleiß hinein und bei or erst bei lblscheibeverschleiß
kann das sein dass ich mit meiner 2 sql abfrage die daten überspeichere ??
weil ich sage ja dann wieder Query.Fields[0].AsString
  Mit Zitat antworten Zitat
cell

Registriert seit: 5. Jul 2005
Ort: Ebensee
171 Beiträge
 
Delphi 4 Standard
 
#7

Re: if anweisung

  Alt 15. Jul 2005, 08:20
@ Bart 82 genau das will ich wenn 1 leer ist soll die fehlermeldung kommen---kommt aber nicht---
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: if anweisung

  Alt 15. Jul 2005, 08:21
Wieso öffnest du in der while-Schleife die Query denn neu?
Volker
  Mit Zitat antworten Zitat
cell

Registriert seit: 5. Jul 2005
Ort: Ebensee
171 Beiträge
 
Delphi 4 Standard
 
#9

Re: if anweisung

  Alt 15. Jul 2005, 08:25
weil ich einen 2 sql befehl habe
  Mit Zitat antworten Zitat
Benutzerbild von Duke_2004
Duke_2004

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

Re: if anweisung

  Alt 15. Jul 2005, 08:27
2 SQL Abfragen mit einer Schleife wird in deinem Fall nix gutes... Es wäre besser, wenn du die Sache nochmal kurz überdenkst... Und nimm Float-Variablen! -> agewvo:float; -> agewvo := query.Fields[?].asfloat


Gibt es als Ergebnis deiner Abfrage eigentlich nur einen Datensatz? Dann brauchst du nämlich garkeine Schleife, ansonsten würden dich ja ka wieviele Messageboxen nerven, wenn immer alle Werte leer sind...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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