Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Direkteintrag in feld per Zeos (https://www.delphipraxis.net/111646-direkteintrag-feld-per-zeos.html)

scuby 7. Apr 2008 10:41

Datenbank: Firebird • Version: 2.0 • Zugriff über: ZEOS

Direkteintrag in feld per Zeos
 
Hi,

ich denke das sollte fix gelöst werden und dann bin ich auch ruhig *gg*....

Da ich erst seid gestern mit Zeos arbeite wollte ich folgendes mit Zeos darstellen...

Delphi-Quellcode:
Query2['Matnr1'] := strtoint(Label9.Caption);
Query2['VNr1'] := strtoint(Label10.Caption);
Query2.Append;
Query2.Post;
Query2.Active := true;
showmessage('Student erfolgreich eingetragen!');
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
So sieht es zumindest mit BDE aus, mit Zeos weiß ich allerdings nicht wie ich es realisieren kann einen Wert direkt in ein feld einzutragen....

LG
Scuby

mkinzler 7. Apr 2008 10:49

Re: Direkteintrag in feld per Zeos
 
Du verbindest den Select-Query mit einer TZUpdateSQL-Kompo. Dort kannst du die entsprechenden Statements für Update, Insert, Delete hinterlegen. Mit Query.Insert/.Update./Delete + Query.Post wird dann das entsprechende Statement ausgeführt.

scuby 7. Apr 2008 11:33

Re: Direkteintrag in feld per Zeos
 
ok soweit geht das...aber jetzt kommt er mir mit inkompatiebele Typen, welches nicht sein kann, wenn ich auf Button6 klicke....

Delphi-Quellcode:
procedure TForm8.Button6Click(Sender: TObject);
var ver,s : string;
var mat,a : Integer;
procedure TForm8.Button2Click(Sender: TObject);
begin
 zQuery3.First;
 Label3.Caption := zQuery3.FieldbyName('VName').AsString;
 Label5.Caption := zQuery3.FieldbyName('VNr').AsString;
end;

procedure TForm8.Button3Click(Sender: TObject);
begin
 zQuery3.prior;
 Label3.Caption := zQuery3.FieldbyName('VName').AsString;
 Label5.Caption := zQuery3.FieldbyName('VNr').AsString;
end;

procedure TForm8.Button4Click(Sender: TObject);
begin
 zQuery3.Next;
 Label3.Caption := zQuery3.FieldbyName('VName').AsString;
 Label5.Caption := zQuery3.FieldbyName('VNr').AsString;
end;

procedure TForm8.Button5Click(Sender: TObject);
begin
 zQuery3.Last;
 Label3.Caption := zQuery3.FieldbyName('VName').AsString;
 Label5.Caption := zQuery3.FieldbyName('VNr').AsString;
end;

procedure TForm8.Button1Click(Sender: TObject);
var m,n,v,s : String;
var a,b,c : Integer;
begin
 a:=1;
 b:=1;
 c:=1;
 if edit1.text = '' then a :=1 else a := 0;
 if edit2.text = '' then b := 1 else b := 0;
 if edit3.text = '' then c := 1 else c := 0;
 if (a = 0) and (b = 0) then showmessage('Bitte nur ein Suchkriterium nutzen!');
 if (a = 0) and (c = 0) then showmessage('Bitte nur ein Suchkriterium nutzen!');
 if (a = 0) and (b = 1) and (c = 1) then m := edit1.text
 else
  begin
   n := '';
   v := '';
  end;
 if (a = 1) and (b = 0) and (c = 0) then
 begin
  n := edit2.text;
  v := edit3.Text;
 end;

 zquery1.SQL.Text := 'select * from Studenten WHERE (Matnr='+#39+m+#39+') or (Name='+#39+n+#39+' and Vorname='+#39+v+#39+')';
 zquery1.open;
 zQuery1.First;
end;

procedure TForm8.Button7Click(Sender: TObject);
begin
 zQuery1.First;
end;

procedure TForm8.Button8Click(Sender: TObject);
begin
 zQuery1.Prior;
end;

procedure TForm8.Button9Click(Sender: TObject);
begin
 zQuery1.Next;
end;

procedure TForm8.Button10Click(Sender: TObject);
begin
 zQuery1.Last;
end;

procedure TForm8.Button6Click(Sender: TObject);
var s : string;
var ver,mat,a : Integer;
begin
 mat := zQuery1.Fieldbyname('Matnr').AsInteger;
 ver := zQuery3.Fieldbyname('VNR').AsInteger;

 zQuery2.SQL.Text := 'select * from studvera';
 zquery2.open;

 s := 'INSERT INTO studvera (Matnr1, vnr1) VALUES ('+#39+ mat +#39+','+#39+ a +#39+')';
 zquery2.close;
 zQuery2.Sql.Clear;
 zQuery2.Sql.Add(s);
 zQuery2.ExecSQL;

 showmessage('Student erfolgreich eingetragen!');
 Edit1.Text := '';
 Edit2.Text := '';
 Edit3.Text := '';
end;

procedure TForm8.Edit4Change(Sender: TObject);
var s : string;
begin
 s:= 'select * from Veranstaltungen WHERE VName='+#39+Edit4.Text+#39+'';
 zquery3.close;
 zQuery3.Sql.Text := s;
 zQuery3.Active:=true;
 zQuery3.First;
end;
end.
Matnr1 = Integer
Vnr1 = Integer

Matnr = Integer
VNR = Integer

*Ich weiß Code etwas wirr aber eigentlich ging das so...*

calculon 7. Apr 2008 11:38

Re: Direkteintrag in feld per Zeos
 
Delphi-Quellcode:
s := 'INSERT INTO studvera (Matnr1, vnr1) VALUES ('+#39+ mat +#39+','+#39+ a +#39+')';
Du kannst einem string keine integer-Werte einfach so zuweisen. Der Debugger hilft übrigens bei solchen Situationen ungemein.

Gruß

Calculon
--

mkinzler 7. Apr 2008 11:45

Re: Direkteintrag in feld per Zeos
 
Du scheinst so einiges nicht verstanden zu haben. Mit Tutorials anschauen meinen wir durchlesen und verstehen.

-Zudem Caste nur wenn notwendig: Man braucht keinen String in einen String, bzw. einen integer in einen Integer wandeln.
(.as<Typ> ist ein Cast) besser .Value
-Es geht nichts über aussagekräftige Variablennamen. Button6 sagt jedem der, den Code liest sofort was gemacht werden soll
-Es gibt hier zudem auch einen Delphi-Tag
-Da es sich immer um die gleichen Vorgänge handelt, würde ich die Abfragen parametrisieren.
Verwende ein Update-Objekt (TZUpdateSQL) siehe oben.

BTW. Dein Code ist Horror egal, ob für Zeos oder BDE.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 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