AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Aktualisierung eines DBGRID
Thema durchsuchen
Ansicht
Themen-Optionen

Aktualisierung eines DBGRID

Ein Thema von Cosamia · begonnen am 6. Feb 2008 · letzter Beitrag vom 6. Feb 2008
Antwort Antwort
Benutzerbild von Cosamia
Cosamia

Registriert seit: 27. Feb 2007
Ort: Emmendingen
221 Beiträge
 
Delphi 2007 Professional
 
#1

Aktualisierung eines DBGRID

  Alt 6. Feb 2008, 09:55
Datenbank: Access • Zugriff über: ADO
Hallo zusammen,

ich habe jetzt wieder ein neues Thema welches mich beschäftig.
Ich füge einen neuen Datensatz per Adotable in eine Accessdatenbank ein.
Darauf folgt dann eine Aktualisierung des DBGRID.

Beim ersten mal einfügen wird das Grid aber nicht aktualsiert. Erst wenn ich einen weiteren Datensatz hinzufüge erscheinen beider neuen Datesätze in dem DBGrid.

Was mache ich falsch?

Delphi-Quellcode:
procedure TMain.AddBtnClick(Sender: TObject);
begin
Adotable1.Active := false;
Adotable1.tablename := 'anpassd';
Adotable1.Active := true;
if fitteredit.Text <> 'then
begin
adotable1.Edit;
AdoTable1.Append;
adotable1.FieldByName('Anpasser').AsString := fitteredit.Text;
adotable1.post;
end;
//delay(1000);
gridrefresh('anpassd','Anpasser');
end;

procedure TMain.Gridrefresh(Tabelle,fieldn:string);
begin
jvdbgrid2.Update;
adoquery1.active:=false;
adoquery1.sql.Clear;
adoquery1.sql.text := 'SELECT * FROM '+ Tabelle;
adoquery1.active:=true;
adoquery1.ExecSQL;
adoquery1.Requery();
jvdbgrid2.Columns[0].FieldName := fieldn;
jvdbgrid2.Columns[0].Width := 177;
end;
Das oben eingebaute Delay führt zwar zum gewünschten Effekt, ist aber nicht sonderlich schön.
Zudem muss ja irgendwo in meinem Code ein Fehler sein.
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#2

Re: Aktualisierung eines DBGRID

  Alt 6. Feb 2008, 10:22
Zitat von Cosamia:
Ich füge einen neuen Datensatz per Adotable in eine Accessdatenbank ein.
Access ist keine Datenbank - vielleicht liegt es daran [SCNR]

Zitat von Cosamia:
Beim ersten mal einfügen wird das Grid aber nicht aktualsiert. Erst wenn ich einen weiteren Datensatz hinzufüge erscheinen beider neuen Datesätze in dem DBGrid.

Was mache ich falsch?

Das edit vor dem Append kannst Du Dir sparen.
Das Gridrefresh sollte ebnfalls unnoetig sein.
^^^^^^^^^^^^^^Darin:
ExecSQL ist fuer Update, Insert und Delete statements, die keine Datenmenge zurueckliefern.
Ein Open sollte genuegen.
Requery ist ueberfluessig, wenn Du open ausfuehrst.
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
Benutzerbild von Cosamia
Cosamia

Registriert seit: 27. Feb 2007
Ort: Emmendingen
221 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Aktualisierung eines DBGRID

  Alt 6. Feb 2008, 10:27
Zitat von mashutu:
Zitat von Cosamia:
Ich füge einen neuen Datensatz per Adotable in eine Accessdatenbank ein.
Access ist keine Datenbank - vielleicht liegt es daran [SCNR]

Zitat von Cosamia:
Beim ersten mal einfügen wird das Grid aber nicht aktualsiert. Erst wenn ich einen weiteren Datensatz hinzufüge erscheinen beider neuen Datesätze in dem DBGrid.

Was mache ich falsch?

Das edit vor dem Append kannst Du Dir sparen.
Das Gridrefresh sollte ebnfalls unnoetig sein.
^^^^^^^^^^^^^^Darin:
ExecSQL ist fuer Update, Insert und Delete statements, die keine Datenmenge zurueckliefern.
Ein Open sollte genuegen.
Requery ist ueberfluessig, wenn Du open ausfuehrst.
Leider funktioniert es auch mit dem open nicht. Falsche Stelle?

Delphi-Quellcode:
procedure TMain.Gridrefresh(Tabelle,fieldn:string;clwidth:integer);
begin
jvdbgrid2.Update;
adoquery1.active:=false;
adoquery1.sql.Clear;
adoquery1.sql.text := 'SELECT * FROM '+ Tabelle;
adoquery1.active:=true;
//adoquery1.ExecSQL;
adoquery1.Open;
//adoquery1.Requery();
jvdbgrid2.Columns[0].FieldName := fieldn;
jvdbgrid2.Columns[0].Width := clwidth;
end;
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#4

Re: Aktualisierung eines DBGRID

  Alt 6. Feb 2008, 10:45
Schmeiss das Gridrefresch raus. So weit ich das sehen kann tut es nichts sinnvolles.
Die Spaltenbreite kann man auch anders einstellen und das Problem liegt vermutlich an ACCESS (kann ich jetzt nicht verifizieren, aber mit einer Datenbank tut es)
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Aktualisierung eines DBGRID

  Alt 6. Feb 2008, 10:54
Bei Access über ADO darf nur eine einzige ADO-Conncetion aufgebaut werden!!
Es ist vom Konzept her auch möglich, dass jede ADOTable oder ADOQuery seine eigene Connection aufbaut,
das sollte man aber nicht tun.

Bei Access sollte man die CursorLocation auf clUseServer einstellen.
Lass dich durch die Seitenhiebe auf Access nicht verunsichern, solange du folgende Bedingungen einhältst,
ist Access recht brauchbar:
1.) nur single user Betrieb
2.) Datenbank muss auf lokaler Festplatte liegen (auf einer Netzwerkplatte tritt ab ca. 200 MB Datenbankgrösse ein Leistungseinbruch auf)
3.) Datenbank darf nicht >= 2 GB werden
4.) bei sehr komplexen SQL abfragen (mehrere Tabellen mit Unterabfragen) können Probleme auftreten
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Cosamia
Cosamia

Registriert seit: 27. Feb 2007
Ort: Emmendingen
221 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Aktualisierung eines DBGRID

  Alt 6. Feb 2008, 11:15
Ich habe es jetzt anders gelöst. So funzt es.

Delphi-Quellcode:
procedure TMain.Button1Click(Sender: TObject);
begin
adoquery1.active:=false;
adoquery1.sql.Clear;
adoquery1.sql.text := 'insert into anpassd (anpasser) values ('''+fitteredit.Text+''')';
adoquery1.ExecSQL;
gridrefresh('anpassd','Anpasser',177);
end;
Danke für die Hilfe
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:41 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