Autor Beitrag
Becks16
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 405



BeitragVerfasst: Di 16.11.04 11:41 
Hallo
Ich habe folgendes Problem !!
Ich habe ein Programm geschrieben was auf eine Datenbank zugreift. Wo ich Datensätze anlegen, speichern u.s.w. kann. Nun möchte ich einen neuen Datensatz anlegen dann Speichern. Die Datensätze sehe ich im DBGrid kann sie von daus übernehemen und dann ändern. So weit funktioniert auch alles bis auf das, das was neu im Programm ist erst nach einen Neustart des Programms zu sehen ist (im DbGrid ändert sich erst nichts)

Wie kann ich den Fehlerbeheben ???

Mfg
vielen dank im vorraus
highhatcompy
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win2000,Win XP,Linux(SuSE9.2)
Delphi 5 Prof.
BeitragVerfasst: Di 16.11.04 12:10 
Hallo,
wenn ich dich richtig verstehe willst du dann die geänderte DB in deinem Grid sehen!? Ich würde die geänderte DB schließen, das Grid löschen und dann die DB wieder öffnen.

Wie greifst du auf die DB zu ? Mit ADO?

Mfg HHC

_________________
Bist Du ein Programmierer, so wirst Du gegen Computer, Hardwarehersteller und Anwender verlieren. (Quelle: Murphy's Computer-Gesetz)
Becks16 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 405



BeitragVerfasst: Di 16.11.04 12:17 
erst mal danke !!

jetzt sehe ich gar nicht mehr durch ....Ich habe ein Formular vor ein DbGrid drauf ist und da neben ist so eine art eingabe Formular. Dann habe ich verschiedene Buttons wie Speichen, Neu und Übernehemen. Bevor ich nicht auf Neu geklickt habe kann ich in den Eingabefeldern nichts rein schreiben. Dann klicke ich auf Neu und lege einen Datensatz an und Speicher den dann auch. Im DBGrid stehen meine Datensätze drinne die ich schon habe und nun möchte ich das der neue Datensatz auch gleich da rein kommt ohne das ich das Programm Neustarte
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 16.11.04 12:20 
Query1.Refresh sollte helfen. (Das Query, dass mit dem DBGrid verbunden ist.)
Becks16 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 405



BeitragVerfasst: Di 16.11.04 12:22 
und wo füge ich das ein ?????? Bei allen buttons oder irgendwo lokal ??
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 16.11.04 13:21 
Nach dem Speichern deines Datensatzes musst du das DataSet, dass mit dem DBGrid verbunden ist, aktualisieren (Refresh).
Becks16 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 405



BeitragVerfasst: Di 16.11.04 13:58 
Es tut mir leid ich kann bei mir im Quelltext nichts mit DataSet oder der gleichen finden!

_________________
Ich bin Dumm und weiss nichts :-)
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 16.11.04 22:10 
Na denn nochmal ganz langsam zum nachvollziehen:

Dein DBGrid hat in den Eigenschaften eine Verbindung zu einer DataSource.
Diese DataSource ist mit einem DataSet verbunden.
So ein DataSet kann ein Query oder ein Table sein.

Wenn du nun in deinen Routinen den neuen Datensatz speicherst, musst du mit deinem DataSet (also ein Query oder Table) eine Aktualisierung durchführen.
Da ich nicht weiß, was von beiden du verwendest, habe ich nur vom DataSet gesprochen. Da beides gemäß OOP Nachkommen von TDataSet sind, musst du nur das entsprechende Refresh aufrufen.

Danach sollte das DBGrid automatisch den aktuellsten Stand bekommen.
Becks16 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 405



BeitragVerfasst: Mi 17.11.04 08:20 
Ich habe ein Query genutzt. Hier ist mal der Quelltext von meiner Speicher Funktion

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TForm_projektverwaltung.btn_speichernClick(Sender: TObject);
begin
//CS    query_projektverwalten.SQL.Text :='INSERT INTO Projekt VALUES ('+Edit_projektname.Text+')';
  query_projektverwalten.open;
  if insert then  //neu
  begin
    Query_projektverwalten.Append;
  end
  else  //bearbeiten
  begin
    Query_projektverwalten.Edit;
  end;
    Query_projektverwalten.FieldByName('projektname').AsString := Edit_projektname.Text;
    Query_projektverwalten.FieldByName('begin').AsDateTime := DateTimePicker1.Date ;
    Query_projektverwalten.FieldByName('ende').AsDateTime := DateTimePicker2.Date;
    Query_projektverwalten.FieldByName('anzahl').AsString := Edit_anzahlmitarbeiter.Text;
    Query_projektverwalten.FieldByName('beschreibung').AsString := Memo1.Text;
    Query_projektverwalten.Post;
    Query_projektauswaehlen.Open;
    insert := false;

end;


vieleicht kannst du mir jetzt besser helfen
vielen dank

_________________
Ich bin Dumm und weiss nichts :-)
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 17.11.04 09:24 
Becks16 hat folgendes geschrieben:
Ich habe ein Query genutzt. Hier ist mal der Quelltext von meiner Speicher Funktion

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
procedure TForm_projektverwaltung.btn_speichernClick(Sender: TObject);
begin
//CS    query_projektverwalten.SQL.Text :='INSERT INTO Projekt VALUES ('+Edit_projektname.Text+')';
  query_projektverwalten.open;
  if insert then  //neu
  begin
    Query_projektverwalten.Append;
  end
  else  //bearbeiten
  begin
    Query_projektverwalten.Edit;
  end;
    Query_projektverwalten.FieldByName('projektname').AsString := Edit_projektname.Text;
    Query_projektverwalten.FieldByName('begin').AsDateTime := DateTimePicker1.Date ;
    Query_projektverwalten.FieldByName('ende').AsDateTime := DateTimePicker2.Date;
    Query_projektverwalten.FieldByName('anzahl').AsString := Edit_anzahlmitarbeiter.Text;
    Query_projektverwalten.FieldByName('beschreibung').AsString := Memo1.Text;
    Query_projektverwalten.Post;
// Ich vermute, dass Query_projektauswaehlen die Daten im DBGrid anzeigt.
//    Query_projektauswaehlen.Open; 
// Entweder muss hier folgendes stehen:
    Query_projektauswaehlen.Close;
    Query_projektauswaehlen.Open;
// oder
    Query_projektauswaehlen.Refresh;
    insert := false;

end;


Theoretisch soll ein einfaches Open genügen (soll automatisch ein Close implizieren). Aber ich habe schon mehrfach erlebt, dass dem nicht so ist.
Becks16 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 405



BeitragVerfasst: Mi 17.11.04 09:35 
Es hat geklappt ich danke dir vielmals.
Du hast es echt drauf ein dickes lob für dich

_________________
Ich bin Dumm und weiss nichts :-)