AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Probleme mit dbgrid!!!
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit dbgrid!!!

Ein Thema von plautzer · begonnen am 23. Aug 2003 · letzter Beitrag vom 8. Sep 2003
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: Probleme mit dbgrid!!!

  Alt 29. Aug 2003, 15:47
Zitat von plautzer:
wieso steht da bei der Paradox 5 das sie extra für windows sei??
Weil 4 ,glaub ich, noch für DOS war.
Zitat von plautzer:
Wie kommts noch das die mit der 5 alles besser klappt als mit der 7??
Weil du es dir einbildest.
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#22

Re: Probleme mit dbgrid!!!

  Alt 30. Aug 2003, 11:42
Zitat von Memo:
Weil du es dir einbildest.
ich habe bei meinen programm die tabelle gewechselt, einmal paradox 5 und dann paradox 7... mit den selben einstellungen konnte ich bei paradox 5 neue einträge hinzufügen etc. die wurden dann auch gespeichert... mit paradox 7 konnte ich zwar auch neue moeter hinzufügen dennoch bleiben die nicht erhalten bei der nächsten öffnung des programmes, quasi nich trichtig gespeichert. Und nur einbildung kann das nicht sein.

Ich gern noch vorgespeicherte profile haben.. also das schon 100 ids vorgetragen sind... wie kann man das machen??

Plautzer
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#23

Re: Probleme mit dbgrid!!!

  Alt 31. Aug 2003, 16:14
HI,

ich verstehe es einfach nicht, ich kann weder auf dauer in meiner tabelle löschen, editieren... immer wenn ich das programm neue öffne.. sind genau die exakten werte da??
Hat dafür jemand ne erklärung auf lager... eigentlich darf es doch net gebn oda??

ich habe hier ein schleife um auf die 100 einträge zu kommen, doch klappt einfach nicht, da eine fehlermeldung wegen string/integer kommt:

var i:integer
begin
for i:=1 to 100 do
begin
Table1.Edit;
Table1.Fields['Whg'].AsInteger:=i;
Table1.Post;
end;
end;

wie kann ich das funktionstüchtig machen??

Danke

Plautzer
  Mit Zitat antworten Zitat
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#24

Re: Probleme mit dbgrid!!!

  Alt 1. Sep 2003, 16:13
Hi plautzer,

ich glaube, es gibt zwei Probleme in Deinem Code. Erstens scheint Dein Feld 'Whg' nicht vom Typ integer zu sein. Das müsstest Du erst mal korrigieren. Alternativ kannst Du natürlich auch die Zahl mit QuotedStr(i) in einen String umwandeln. Zweitens, wenn Du mit "auf hundert Einträge kommen" meinst, dass 100 Datensätze erzeugt werden sollen, solltest Du statt Table1.Edit besser Table1.Append verwenden (Edit schreibt immer in den aktuellen, also in denselben Datensatz). Außerdem kannst Du mal versuchen, das Feld mit FieldByName anzusprechen.
Delphi-Quellcode:
var i:integer
begin
  for i:=1 to 100 do
    with Table1 do begin
      Append;
      FieldByName('Whg').AsInteger := i;
      Post;
    end;
end;
Harry Boldt
Gruß, harrybo
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#25

Re: Probleme mit dbgrid!!!

  Alt 1. Sep 2003, 18:20
Hey,
danke es funzt.

Doch das problem mit dem speichern besteht immernoch.
Ich kann nichts auf dauer löschen, editieren hinzufügen.
Es speichert einfach nicht!!!!

What to do??


Plautzer
  Mit Zitat antworten Zitat
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#26

Re: Probleme mit dbgrid!!!

  Alt 1. Sep 2003, 18:25
Hi Plautzer,

kannst Du mal Deinen aktuellen Code hier reinposten? Sonst fischen wir hier im Trüben.
Harry Boldt
Gruß, harrybo
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#27

Re: Probleme mit dbgrid!!!

  Alt 1. Sep 2003, 18:35
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, DB, StdCtrls, Mask, DBCtrls, DBTables, ExtCtrls, Grids,
  DBGrids;

type
  TMietverwaltung = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Table1: TTable;
    Table2: TTable;
    Table1Whg: TAutoIncField;
    Table1Name: TStringField;
    Table1Vorname: TStringField;
    Table1Mietbegin: TDateField;
    Table1Bemerkung: TStringField;
    Table1Telefon: TIntegerField;
    Table1Bruttomiete: TCurrencyField;
    Table1Nettomiete: TCurrencyField;
    Table1Nebenkosten: TCurrencyField;
    Table1Kaltwasser: TCurrencyField;
    Table1Warmwasser: TCurrencyField;
    Table1Mll: TCurrencyField;
    Table1Fernwrme: TCurrencyField;
    Table1Antenne: TCurrencyField;
    Table1HMservice: TCurrencyField;
    Label1: TLabel;
    E_whg: TDBEdit;
    DataSource1: TDataSource;
    Label2: TLabel;
    E_name: TDBEdit;
    Label3: TLabel;
    E_vorname: TDBEdit;
    Label4: TLabel;
    E_mietbeg: TDBEdit;
    Label5: TLabel;
    E_Bemerk: TDBEdit;
    Label6: TLabel;
    E_tel: TDBEdit;
    Label7: TLabel;
    E_brutto: TDBEdit;
    Label8: TLabel;
    E_netto: TDBEdit;
    Label9: TLabel;
    E_neben: TDBEdit;
    Sp_schlies: TSpeedButton;
    Sp_off: TSpeedButton;
    DBGrid1: TDBGrid;
    first: TBitBtn;
    prior: TBitBtn;
    next: TBitBtn;
    last: TBitBtn;
    store: TButton;
    delete: TButton;
    new: TButton;
    cancel: TButton;
    Table2Id: TIntegerField;
    Table2Datum: TDateField;
    Table2Bruttomiete: TCurrencyField;
    Table2Bezahlt: TStringField;
    DataSource2: TDataSource;
    Button1: TButton;
    Button2: TButton;
    DBNavigator1: TDBNavigator;
    Button3: TButton;
    procedure Sp_offClick(Sender: TObject);
    procedure Sp_schliesClick(Sender: TObject);
    procedure firstClick(Sender: TObject);
    procedure priorClick(Sender: TObject);
    procedure nextClick(Sender: TObject);
    procedure lastClick(Sender: TObject);
    procedure storeClick(Sender: TObject);
    procedure deleteClick(Sender: TObject);
    procedure newClick(Sender: TObject);
    procedure cancelClick(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure FormShow(Sender: TObject);
    procedure E_nameChange(Sender: TObject);
    procedure Button3Click(Sender: TObject);

  private
    procedure setbuttons(m: Byte);
  public
    { Public-Deklarationen }
  end;

var
  Mietverwaltung: TMietverwaltung;
  pos: TBookmark;
implementation

uses Unit2;

{$R *.dfm}

procedure TMietverwaltung.Sp_offClick(Sender: TObject);
begin
sp_schlies.Visible:=true;
sp_off.Visible:=false;
form2.Show;
end;

procedure TMietverwaltung.Sp_schliesClick(Sender: TObject);
begin
sp_schlies.Visible:=false;
sp_off.Visible:=true;
form2.close;
end;

procedure TMietverwaltung.setbuttons(m: Byte);
begin
 case m of
        0:begin
           new.Enabled:=false;
           store.Enabled:=false;
           delete.Enabled:=false;
           cancel.Enabled:=false;
          end;
        1:begin
           new.Enabled:=true;
           store.Enabled:=false;
           delete.Enabled:=true;
           cancel.Enabled:=false;
          end;
        2:begin
           new.Enabled:=false;
           store.Enabled:=true;
           delete.Enabled:=false;
           cancel.Enabled:=true
          end
     end
end;

procedure TMietverwaltung.firstClick(Sender: TObject);
begin
Table1.first;
first.Enabled:=false;
prior.Enabled:=false;
next.Enabled:=true;
last.Enabled:=true;
table2.Filtered:=false;
table2.Filter:='id = '+Table1.Fields[0].AsString;
table2.Filtered:=true;
end;

procedure TMietverwaltung.priorClick(Sender: TObject);
begin
Table1.prior;
next.Enabled:=true;
last.Enabled:=true;
if table1.Bof then firstclick(self);
table2.Filtered:=false;
table2.Filter:='id = '+Table1.Fields[0].AsString;
table2.Filtered:=true;
end;

procedure TMietverwaltung.nextClick(Sender: TObject);
begin
Table1.next;
prior.Enabled:=true;
first.Enabled:=true;
if table1.Bof then lastclick(self);
table2.Filtered:=false;
table2.Filter:='id = '+Table1.Fields[0].AsString;
table2.Filtered:=true;
end;

procedure TMietverwaltung.lastClick(Sender: TObject);
begin
Table1.last;
first.Enabled:=True;
prior.Enabled:=True;
next.Enabled:=false;
last.Enabled:=false;
table2.Filtered:=false;
table2.Filter:='id = '+Table1.Fields[0].AsString;
table2.Filtered:=true;
end;

procedure TMietverwaltung.storeClick(Sender: TObject);
begin
if Table1.State=dsEdit then Table1.Post;
setbuttons(1);
table1.Refresh
end;

procedure TMietverwaltung.deleteClick(Sender: TObject);
begin
if messagedlg('Wollen sie den mieter wirklich löschen??',
mtwarning,[mbyes, mbno], 0) = mryes then
begin
Table1.Delete;
Table1.Edit
end
end;

procedure TMietverwaltung.newClick(Sender: TObject);
begin
table1.Edit;
table1['Mietbegin']:=formatdatetime('dd.mm.yyyy', now);
table1.post;
setbuttons(2);
table2.Filtered:=false;
table2.Filter:='id = '+Table1.Fields[0].AsString;
table2.Filtered:=true;
end;

procedure TMietverwaltung.cancelClick(Sender: TObject);
begin
if Table1.State=dsEdit then Table1.Cancel;
setbuttons(1);
table1.Refresh
end;





procedure TMietverwaltung.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
table2.Edit;
table2['id']:=table1['Whg'];
table2.Post;
end;

procedure TMietverwaltung.FormShow(Sender: TObject);
var i:integer;
begin

setbuttons(1);

end;


procedure TMietverwaltung.E_nameChange(Sender: TObject);
begin
setbuttons(2)
end;

procedure TMietverwaltung.Button3Click(Sender: TObject);
var i:integer;
begin
  for i:=1 to 100 do
    with Table1 do begin
      Append;
      FieldByName('Whg').AsInteger := i;
      Post;
    end;
end;

end.

Thx, leude.

Plautzer
  Mit Zitat antworten Zitat
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#28

Re: Probleme mit dbgrid!!!

  Alt 1. Sep 2003, 20:54
Hi plautzer, hier meine Lösungsvorschläge:

1.) schreibe die Prozedur setButtons um, indem Du dort 4 Boolean Parameter definierst und bei jedem Aufruf den Zustand für die Buttons übergibst, das erspart die die Case Struktur und Du kannst vor allem die Prozedur in Deinen Navigations Prozeduren (prior, next etc.) verwenden.

2.) Du filterst in den Navigations Prozeduren. Warum? Kannst Du meiner Meinung nach weglassen.

3.) Die erste Zeile von storeClick(Sender: TObject); muss heißenif Table1.State in [dsInsert, dsEdit] then Table1.Post; 4.) In deleteClick setzt Du die Tabelle auf Edit, was unüblich ist, denn die Tabelle wird automatisch auf Edit gesetzt, wenn über DBGrid oder DBField editiert wird.

5.) newClick(Sender: TObject) sollte so lauten:
Delphi-Quellcode:
table1.Append;
table1['Mietbegin']:=formatdatetime('dd.mm.yyyy', now);
Gepostet werden sollte auch nichts, da der Anwender ja weiter Daten eingeben soll, die Tabelle bleibt also im Status dsInsert (s. Punkt 3.).

6.) Die erste Zeile von cancelClick(Sender: TObject); muss heißenif Table1.State in [dsInsert, dsEdit] then Table1.Cancel; 7.) Was DBNavigator1Click machen soll ahne ich zwar, kann ich aber aus Deinem Code nicht nachvollziehen.

8.) Button3Click schließlich ist wohl Dein Testbutton. Programmiertechnisch zwar ok, allerdings, das Feld ist ein TAutoIncField, in das sich Paradox wahrscheinlich nicht reinpfuschen lässt, da das DBMS den Eintrag selbst vornimmt, das heißt, Du brauchst Dich darum nicht zu kümmern (oder Du setzt einen Server wie Firebird oder Interbase ein, dort gibt es so komische Felder erst mal nicht). Versuche es also mal damit, dass Du ein anderes Feld beschreibst, z.B. Name.

9.) A propos Name, hier wäre es sinnvoll wenn es eine eigene Tabelle "Mieter" gäbe, damit man für einem Mieter mehrere Datensätze pflegen kann. So könnte festgehalten werden, in welchen Zeiträumen ein Mieter welche Konditionen hatte (Mietzins u.a. kann sich ändern).

10.) Zu guter Letzt: Eine Telefonnummer als IntegerField wird über kurz oder lang Probleme machen. Erstens passen nicht alle Nummern dort rein (z.B.34567), zweitens, versuch mal eine 0 oder ein + voranzustellen ;-). Ein TStringField ist hier also günstiger.

Hoffe, das hilft Dir weiter, viel Erfolg
Harry Boldt
Gruß, harrybo
  Mit Zitat antworten Zitat
plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#29

Re: Probleme mit dbgrid!!!

  Alt 2. Sep 2003, 18:05
Vielen vielen dank.

Ich habe das Meiste geändert was du gesagt hast,
was ich nicht kapiert habe ist das mit der dritten Tabelle??
Ich habe bis jetzt 2 tabellen... einmal für die daten und einmal für die rechnung.

Das speichern funzt trotzdem net.
Ich werde mal das prog hochladen.. vielleicht hilft das.

Hättet ihr noch einen vorschlag wie ich das grid leer bekommen... wenn ich einen mieter hinzufüge???

Thx.

Plautzer
Angehängte Dateien
Dateityp: rar mietprogramm.rar (343,5 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#30

Re: Probleme mit dbgrid!!!

  Alt 2. Sep 2003, 18:38
Zitat von Memo:
CachedUpdate ist False?
Darf ich mich mal selber zitieren? Warum liest du nicht was ich dir schon vor einer Zeit geschieben habe? Deine Daten verpuffen. Oder informiere dich über Transaction.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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