Autor Beitrag
Cosmic
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 63



BeitragVerfasst: Fr 06.12.02 19:04 
Hallo,
langsam klappt gar nix mehr :roll:
vielleicht kann ich mein Problem ja jetzt etwas besser vormulieren.
Ich habe in einer Tabelle Werte auf 1 oder 0 gesetzt indem ich auf Radiobuttons klicke. Der Befehl lautet beim klicken auf den Radiobutton:

table3.Edit;
table3.FieldByName('Ausbauvariante2').AsInteger := 0;
table3.Post;

Das klappt wunderbar.
Sobald ich aber einen zweiten Eintrag in der Datenbank eröffne und dann auf den ersten Eintrag zurückklicke ist der Wert für dieses Bsp 'Ausbauvariante2' zwar immer noch 0 aber der Radiobutton ist nich mehr "checked".
Wenn ich das jetzt mit dem Befehl OnDatachange der DataSource ändern will z.B. mit einer If-abfrage ala :

procedure TForm1.DataSource5DataChange(Sender: TObject; Field: TField);

var x : Real;

begin
x := table3.FieldByName('Ausbauvariante2').AsInteger;
If x = 1 Then
Begin
Radiobuttonxyz.checked := true;
End
Else
Begin
Radiobuttonxyz.checked := false;
End;
end;

Dann mekert Delphi noch bevor das Programm läuft, das kein zulässiger Wert für x in der Tabelle steht.
Das kann natürlich auch nicht der Fall sein, weil ich ja unter umständen noch gar keine Werte gewählt habe (also einen Radiobutton gedrückt habe). Was mache ich da falsch???? So schwer kann das doch gar nicht sein, oder ?!
Danke Cosmic :oops:

------------------------------------------------------------------------
Let´s Fetz Heute beginnt Dein Leben.
Michael Ebner
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Sa 07.12.02 00:11 
Versuch mal Folgendes:

ausblenden Quelltext
1:
2:
3:
if Table3.State = dsBrowse
  then Radiobuttonxyz.checked 
    := boolean(Table3.FieldByName('Ausbauvariante2').AsInteger);
Cosmic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 63



BeitragVerfasst: So 08.12.02 13:39 
Titel: Leider keinen Erfolg
Hi,
habe das mit Deinem Code versucht, klappt aber nicht :-( Delphi gibt denselben Error-Code aus ?
Hmm es muß doch möglich sein sowas hinzubekommen?
Trozdem Danke :-)
Ciao Cosmic
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: So 08.12.02 13:52 
Hi,

erstmal würde ich in Deinem Posting die Code-Tags hinzufügen, damit das ganze etwas übersichtlicher wird und Deinen Quelltext formtieren.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.DataSource5DataChange(Sender: TObject; Field: TField); 
var 
  x : Integer; 
begin 
  x := table3.FieldByName('Ausbauvariante2').AsInteger; 
  If x = 1 Then Begin 
    Radiobuttonxyz.checked := true; 
  End Else Begin 
    Radiobuttonxyz.checked := false; 
  End; 
end;


Probiere es mal so, ist natürlich nicht getestet. Aber wenn es funktioniert, dann war Deine Variablen-Deklaration verkehrt.
Cosmic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 63



BeitragVerfasst: So 08.12.02 14:13 
Titel: Hmm Fehlermeldung?
Hi :-)
Danke erst mal für den Tip. (wie bekommt man es denn hin das code hier im Forum in einem extra Kasten ausgibt?)
Dann habe ich das mal eingefügt, aber die Fehlermeldung lautet immer noch:

Projekt Projekt1.exe raised exception class EConvertError with message " 'is not a valid integer value' Process stopped......

aber der Befehl der den Wert setzt lautet :
table3.FieldByName('ausbauvariante2').AsInteger := 1; und wenn ich damit rechne bzw. den wert auslese klappt das immer als integer?!
Der mekert hier regelmäßig!
Grrrr ;-)
Gruß cosmic
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: So 08.12.02 14:16 
Hi Cosmic,

um den Code in einen extra Kasten auszugeben, drücke einfach die Tasten ALT+C, dann schreibst Du Deinen Code und danach drückst Du wieder die Tasten ALT+C.
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mo 09.12.02 09:17 
Hi
Das Problem bei OnDataChange ist, dass es auch schon beim Öffnen der Tabelle ausgelöst wird. An dieser Stelle hast du aber noch gar keine gültigen Datensatz und damit auch keinen gültigen Wert den du konvertieren kannst. Folgende Variante sollte funktionieren:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
try
  RadioButtonXYZ.Checked := False;
  if  not table3.FieldByName('Ausbauvariante2').IsNull then
      RadioButtonXYZ.Checked := table3.FieldByName('Ausbauvariante2').AsInteger = 1;
except
end;

Solange das Projekt innerhalb der IDE läuft, wirst du an dieser Stelle trotzdem eine Exception bekommen, wenn die Tabelle geöffnet wird (Eventuell unter Debugoptionen abstellen).

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Cosmic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 63



BeitragVerfasst: Mo 09.12.02 10:52 
Titel: Danke :-)
Hi,
vielen Dank für diese Lösung :-)
Ich habe ja sicher 3 Stunden versucht das hinzukriegen, bin aber nicht damit zurechtgekommen das Delphi (wie du schon sagtest) die Tabelle sofort aufmacht ! Danke !
Ciao Cosmic