Entwickler-Ecke

Datenbanken - [BDE]verhindern das DBGrid automatisch neue Einträge einfügt


Tabakbrummel - So 20.11.05 21:52
Titel: [BDE]verhindern das DBGrid automatisch neue Einträge einfügt
Hi alle

Ich habe da ein Problem mit den verhindern, dass das DBGrid automatisch neue Einträge einfügt? Es geht darum wenn, ich was in der Tabelle speichern (.Post) will speichert es nur in der ersten Zeile im DBGrid und nicht in der nächste Zeile.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm20.ArtenTableBeforeInsert(DataSet: TDataSet);
begin
  Abort;
end;

procedure TForm20.SWDBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_DOWN) then
  begin
    ArtenTable.DisableControls;
    ArtenTable.Next;
    if ArtenTable.EOF then
      Key := 0
    else
      ArtenTable.Prior;
    ArtenTable.EnableControls;
  end;
end;


Meine frage was mache ich da Falsch?

MfG
Tabakbrummel


cartridge - Mo 21.11.05 21:28

Einiges!

Ich weiß zwar nicht genau, was das werden soll, aber schließe die Tabelle nach dem Einfügen einfach und öffne sie wieder. Oder habe ich Dich da gänzlich falsch verstanden?

Durch das Manipulieren des DB- Cursors überspringst Du z.B. schon jeweils eine Zeile...

Gruß Ingo


Tabakbrummel - Mo 21.11.05 23:40

Hi

Ich möchte es so haben wenn, ich was im DBEdit eintrage das es nicht gleich in der Table übernommen wird. Sondern erst wenn, ich mit .Post speichere in der Table übernommen wird.

MfG
Tabakbrummel


Tabakbrummel - Di 22.11.05 13:14

user profile iconTabakbrummel hat folgendes geschrieben:
Hi

Ich möchte es so haben wenn, ich was im DBEdit eintrage das es nicht gleich in der Table übernommen wird. Sondern erst wenn, ich mit .Post speichere in der Table übernommen wird.

[/Edit] Ich arbeite mit Paradox ,TTable und DataCource

MfG
Tabakbrummel


jasocul - Di 22.11.05 13:38

Dann musst du das mit zwei TTable-Komponenten machen oder "einfache" Edit-Felder nehmen und das manuell eintragen.


Tabakbrummel - Di 22.11.05 14:20

Hi Jasocul

Da hab ich mal eine Frage wie ich das den mit zwei TTable-Komponenten?

Danke im vorraus

MfG
Tabakbrummel


jasocul - Di 22.11.05 14:25

Ein TTable und TDatasource benutzt du für das DBGrid.
Das andere TTable und TDataSource für deine DBEdit-Kopmonenten.

Du musst folgendes beachten:
Wechselst du den Datensatz im DBGrid (bzw. im ersten TTable), musst du das auch im zweiten anpassen. Dafür kannst du einen Filter oder die Find-Methode verwenden.
Wenn der Datensatz gespeichert wird, musst du natürlich ein Refresh mit der ersten TTable-Komponente durchführen. Sonst siehst du die Änderungen nicht im DBGrid.

Ich würde der Einfachheit halber ein zweites Fenster verwenden für die Erfassung und Bearbeitung. Damit sparst du dir eine Menge Probleme, auf die ich jetzt nicht eingehen möchte. Ich will dich ja nicht jetzt schon völlig verwirren.


Tabakbrummel - Di 22.11.05 14:28

Hi Jasocul

Erst mal danke für deine Antworten.

MfG
Tabakbrummel


Tabakbrummel - Di 22.11.05 14:43

Hi Jasocul

Mein du es so das man die zweite Tabelle als art temp. nemmen soll?
Oder mit den Fenster das man spiegeln soll.

MfG
Tabakbrummel


jasocul - Di 22.11.05 15:05

Eher die zweite Variante.
Beispiel:
- In der ersten TTable(DBGrid) wählst du einen Datensatz aus.
- Über einen Button (z.B.) öffnest du das zweite Fenster (Modales Fenster bitte).
- Dort greifst du über ein zweites TTable auf den speziellen Datensatz zu.
- In diesem Fenster hat du dann noch einen Speichern und Abbruch-Button.
- Wenn du speicherst, wird der Datensatz gespeichert und das Fenster geschlossen.
- Im Hauptfenster musst du mit der TTabel-Komponente noch ein Refresh machen, da diese die Änderungen mit dem anderen TTable nicht mitbekommt.

Du arbeitest zwar mit zwei TTable-Komponenten, aber auf der selben Datenbank-Tabelle. Daher hat das mit einer Spigelung oder einer temoorären Tabelle nichts zu tun.


Tabakbrummel - Di 22.11.05 15:38

Hi Jasocul

Mit denn fenster ist nicht so das ding.
Mit den Edit ist denke ich mal eine bessere Lösung? Aber wie es am besten mit den Edit machen?

MfG
Tabakbrummel


jasocul - Di 22.11.05 16:10

Nur mal ein kurzer Ansatz (habe gerade wenig Zeit):
Mit ArtenTable.FieldByName(<Feldname>).AsString kannst du auf die Felder der der Tabelle zugreifen. Damit kannst du die Daten in die Edit-Felder übertragen und wieder zurück geben.


Tabakbrummel - Di 22.11.05 19:26

Hi

Mit den Edit-Felder übertragen habe ich hinbekommen im Button1 und zurück geben auch im FormShow.

Jetzt ist nun noch das Problem? In der DBGrid wenn ich in der zweiten Zeile gehe zeigen die Edits alles von der ersten Zeile der DBGrid an.

Mfg
Tabkbrummel


jasocul - Di 22.11.05 20:02

In deiner TDataSource gibt es ein Ereignis "OnDataChange". Dies wird u.a. ausgelöst, wenn du den Datensatz wechselst. D.h. du kannst jedesmal, wenn das Ereignis ausgelöst wird deine Edit-Felder automatisch neu füllen.
Aufpassen musst du nur, dass du einen Datensatzwechsel nicht zulässt, wenn du gerade in deinen Edit-Feldern etwas am Ändern bist.
Ich würde das DBGrid solange disablen.


Tabakbrummel - Di 22.11.05 20:23

Hi Jasocul

Jetzt weis ich nicht was ich für ein Quelltext in OnDataChange eintragen soll.

MfG
Tabakbrummel


Tabakbrummel - Di 22.11.05 20:33

Hi

Mit der OnDataChange habe ich hin bekommen.

user profile iconjasocul hat folgendes geschrieben:
Aufpassen musst du nur, dass du einen Datensatzwechsel nicht zulässt, wenn du gerade in deinen Edit-Feldern etwas am Ändern bist.
Ich würde das DBGrid solange disablen.


Das mit den Datensatzwechsel verstehe ich nicht.

MfG
Tabakbrummel


jasocul - Mi 23.11.05 09:13

Angenommen, du bist gerade dabei, einen Datensatz zu verändern und wechselst dann im DBGrid die Zeile. Dann sind deine Änderungen in den Edit-Feldern dahin. Das kann natürlich so von dir gewollt sein, ist aber nicht die beste Lösung.
Entweder du sperrst das dBGrid (Enabled := False), solange du bearbeitest oder du prüfst im OnDataChange ob du gerade etwas am Ändern bist und gibst eine Meldung aus. Am besten noch mit der Möglichkeit den Datensatzwechsel abzubrechen oder die Änderungen automaitsch zu speichern.


Tabakbrummel - Mi 23.11.05 10:21

Hi Jasocul

Erst mal vielen Dank für deinen Antworten.
Ich weis nicht ob ich da richtig liege. DBGrind.Enable:= false im AfterEdit.
Da ist Problem. Wenn ich eine Eingabe ändere speichert es sie nicht ab.
Ich bin dann erst mal bis Heute abend ca 20 Uhr nicht im Netz.

MfG
Tabakbrummel


jasocul - Mi 23.11.05 10:48

Im AfterEdit von was?
Ich vermute von einem Edit-Feld.
Mach dir die Arbeit nicht so schwer.
Lege die Edit-Felder auf ein Panel. Solange der Anwender im DBGrid browst, ist das Panel disabled. Wenn der Anwender dann einen Button Ändern oder Erfassen drückt, wird das Panel enabled und das DBGrid disabled. Wird dann ein Button Speichern oder Abbruch gedrückt, wird das Panel wieder disabled und das DBGrid enabled.


Tabakbrummel - Mi 23.11.05 20:59

Hi Jasocul

Eigendlich meinte ich es das man in der DBGrid gar nichts editiert sondern nur über die TEdits. Da ist mein Problem wenn ich was editiere und abspeichere wird das editierte nicht abgespeichert.

MfG
Tabakbrummel


jasocul - Mi 23.11.05 22:15

Aha.
Du hast vermutlich im OnDataChange etwas in der Art gemacht:

Delphi-Quelltext
1:
  Edit1.Text := ArtenTable.FieldByName(<Feldname>).AsString;                    

Wenn du die gemachten Änderungen speicher willst, musst du folgendes machen:

Delphi-Quelltext
1:
2:
3:
  ArtenTable.Edit;
  ArtenTable.FieldByName(<Feldname>).AsString := Edit1.Text;
  ArtenTable.Post;

Das ganze für alle betroffenen Felder. Wenn du Daten erfasst, heißt es natürlich:

Delphi-Quelltext
1:
2:
3:
  ArtenTable.Append;
  ArtenTable.FieldByName(<Feldname>).AsString := Edit1.Text;
  ArtenTable.Post;

Ich hoffe, dass ich das so richtig interpretiert habe. Falls nicht, stelle deinen Source doch mal hier rein. Dann wirds vermutlich leichter.


Tabakbrummel - Mi 23.11.05 23:02

Hi Jasocul

Ich Poste mal mein Quelltext.


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:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
unit Fischarten;

interface

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

type
  TForm20 = class(TForm)
    Panel2: TPanel;
    SWSpeedButton8: TSpeedButton;
    SWSpeedButton6: TSpeedButton;
    SWSpeedButton5: TSpeedButton;
    SWButton1: TButton;
    SWButton2: TButton;
    SWButton3: TButton;
    SWButton4: TButton;
    SWSpeedButton7: TSpeedButton;
    OpenPictureDialog1: TOpenPictureDialog;
    ArtenTable: TTable;
    ArtenDataSource: TDataSource;
    Button5: TButton;
    ArtenTableID: TAutoIncField;
    ArtenTableFischart: TStringField;
    ArtenTableOrdnung: TStringField;
    ArtenTableFamilie: TStringField;
    ArtenTableLatein: TStringField;
    ArtenTableGruppe: TStringField;
    ArtenTableMaxLaenge: TFloatField;
    ArtenTableMaxGewicht: TFloatField;
    ArtenTableMaxAlter: TSmallintField;
    ArtenTableLaichzeit: TStringField;
    ArtenTableLebensraum: TStringField;
    ArtenTableAngeltechnik: TStringField;
    ArtenTableFormZahl: TFloatField;
    ArtenTableKapital: TFloatField;
    ArtenTableImage: TGraphicField;
    Bevel2: TBevel;
    SWPanel1: TPanel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    MWTable: TTable;
    MWDataSource: TDataSource;
    MWSpeedButton5: TSpeedButton;
    MWSpeedButton6: TSpeedButton;
    MWSpeedButton7: TSpeedButton;
    MWSpeedButton8: TSpeedButton;
    MWPanel1: TPanel;
    MWButton1: TButton;
    MWButton2: TButton;
    MWButton3: TButton;
    MWButton4: TButton;
    MWDBGrid1: TSMDBGrid;
    SWDBGrid1: TSMDBGrid;
    Panel3: TPanel;
    MWDBEdit1: TEdit;
    Label1: TLabel;
    MWDBComboBox1: TComboBox;
    Label2: TLabel;
    Label3: TLabel;
    MWDBEdit2: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    MWDBEdit4: TEdit;
    MWDBEdit3: TEdit;
    Label6: TLabel;
    MWDBEdit5: TEdit;
    Label7: TLabel;
    MWDBEdit6: TEdit;
    Label8: TLabel;
    MWDBEdit7: TEdit;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    MWDBEdit8: TEdit;
    MWDBEdit9: TEdit;
    Label12: TLabel;
    MWDBEdit10: TEdit;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    MWDBEdit11: TEdit;
    MWDBEdit12: TEdit;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    SWDBEdit1: TEdit;
    SWDBComboBox1: TComboBox;
    SWDBEdit2: TEdit;
    SWDBEdit3: TEdit;
    SWDBEdit4: TEdit;
    SWDBEdit5: TEdit;
    SWDBEdit6: TEdit;
    SWDBEdit7: TEdit;
    SWDBEdit8: TEdit;
    SWDBEdit9: TEdit;
    SWDBEdit10: TEdit;
    SWDBEdit11: TEdit;
    SWDBEdit12: TEdit;
    Bevel1: TBevel;
    Bevel3: TBevel;
    Bevel4: TBevel;
    MWSpeedButton1: TSpeedButton;
    MWSpeedButton2: TSpeedButton;
    MWSpeedButton3: TSpeedButton;
    MWSpeedButton4: TSpeedButton;
    SpeedButton1: TSpeedButton;
    SWSpeedButton1: TSpeedButton;
    SWSpeedButton2: TSpeedButton;
    SWSpeedButton3: TSpeedButton;
    SWSpeedButton4: TSpeedButton;
    Shape1: TShape;
    MWDBImage1: TImage;
    SWDBImage1: TImage;
    procedure SpeedButton1Click(Sender: TObject);
    procedure MWDataSourceDataChange(Sender: TObject; Field: TField);
    procedure ArtenDataSourceDataChange(Sender: TObject; Field: TField);
    procedure MWSpeedButton2Click(Sender: TObject);
    procedure MWButton4Click(Sender: TObject);
    procedure MWButton3Click(Sender: TObject);
    procedure MWButton2Click(Sender: TObject);
    procedure MWButton1Click(Sender: TObject);
    procedure MWSpeedButton8Click(Sender: TObject);
    procedure MWSpeedButton7Click(Sender: TObject);
    procedure MWSpeedButton6Click(Sender: TObject);
    procedure MWSpeedButton5Click(Sender: TObject);
    procedure MWTableAfterScroll(DataSet: TDataSet);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ArtenTableAfterScroll(DataSet: TDataSet);
    procedure SWSpeedButton1Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure SWButton4Click(Sender: TObject);
    procedure SWButton1Click(Sender: TObject);
    procedure SWButton2Click(Sender: TObject);
    procedure SWButton3Click(Sender: TObject);
    procedure SWSpeedButton5Click(Sender: TObject);
    procedure SWSpeedButton6Click(Sender: TObject);
    procedure SWSpeedButton7Click(Sender: TObject);
    procedure SWSpeedButton8Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form20: TForm20;

implementation

uses VorgabenArtengruppe;

{$R *.dfm}

procedure TForm20.FormShow(Sender: TObject);
begin
  Path16 := ExtractFilePath(Application.ExeName)+'DAT\Artengruppe';
  SWDBComboBox1.Items.LoadFromFile (Path16);
  MWDBComboBox1.Items.LoadFromFile (Path16);
  RadioButton1.Checked := true;
// Süsswasser
  ArtenTable.First;
  SWDBEdit1.Text := ArtenTable.FieldByName('Fischart').AsString;
  SWDBEdit2.Text := ArtenTable.FieldByName('Ordnung').AsString;
  SWDBEdit3.Text := ArtenTable.FieldByName('Formzahl').AsString;
  SWDBEdit4.Text := ArtenTable.FieldByName('Kapital').AsString;
  SWDBEdit5.Text := ArtenTable.FieldByName('Latein').AsString;
  SWDBEdit6.Text := ArtenTable.FieldByName('Familie').AsString;
  SWDBEdit7.Text := ArtenTable.FieldByName('MaxLaenge').AsString;
  SWDBEdit8.Text := ArtenTable.FieldByName('Lebensraum').AsString;
  SWDBEdit9.Text := ArtenTable.FieldByName('Angeltechnik').AsString;
  SWDBEdit10.Text := ArtenTable.FieldByName('MaxGewicht').AsString;
  SWDBEdit11.Text := ArtenTable.FieldByName('Laichzeit').AsString;
  SWDBEdit12.Text := ArtenTable.FieldByName('MaxAlter').AsString;
  SWDBComboBox1.Text := ArtenTable.FieldByName('Gruppe').AsString;
// Meerwasser
  MWTable.First;
  MWDBEdit1.Text := MWTable.FieldByName('Fischart').AsString;
  MWDBEdit2.Text := MWTable.FieldByName('Ordnung').AsString;
  MWDBEdit3.Text := MWTable.FieldByName('Formzahl').AsString;
  MWDBEdit4.Text := MWTable.FieldByName('Kapital').AsString;
  MWDBEdit5.Text := MWTable.FieldByName('Latein').AsString;
  MWDBEdit6.Text := MWTable.FieldByName('Familie').AsString;
  MWDBEdit7.Text := MWTable.FieldByName('MaxLaenge').AsString;
  MWDBEdit8.Text := MWTable.FieldByName('Lebensraum').AsString;
  MWDBEdit9.Text := MWTable.FieldByName('Angeltechnik').AsString;
  MWDBEdit10.Text := MWTable.FieldByName('MaxGewicht').AsString;
  MWDBEdit11.Text := MWTable.FieldByName('Laichzeit').AsString;
  MWDBEdit12.Text := MWTable.FieldByName('MaxAlter').AsString;
  MWDBComboBox1.Text := MWTable.FieldByName('Gruppe').AsString;
end;

procedure TForm20.SWSpeedButton8Click(Sender: TObject);
begin
  ArtenTable.First;
end;

procedure TForm20.SWSpeedButton7Click(Sender: TObject);
begin
  ArtenTable.Prior;
end;

procedure TForm20.SWSpeedButton6Click(Sender: TObject);
begin
  ArtenTable.Next;
end;

procedure TForm20.SWSpeedButton5Click(Sender: TObject);
begin
  ArtenTable.Last;
end;

procedure TForm20.SWButton3Click(Sender: TObject);
begin
  ArtenTable.Edit;
  ArtenTable.FieldByName('Fischart').AsString := SWDBEdit1.Text;
  ArtenTable.FieldByName('Ordnung').AsString := SWDBEdit2.Text;
  ArtenTable.FieldByName('Formzahl').AsString := SWDBEdit3.Text;
  ArtenTable.FieldByName('Kapital').AsString := SWDBEdit4.Text;
  ArtenTable.FieldByName('Latein').AsString := SWDBEdit5.Text;
  ArtenTable.FieldByName('Familie').AsString := SWDBEdit6.Text;
  ArtenTable.FieldByName('MaxLaenge').AsString := SWDBEdit7.Text;
  ArtenTable.FieldByName('Lebensraum').AsString := SWDBEdit8.Text;
  ArtenTable.FieldByName('Angeltechnik').AsString := SWDBEdit9.Text;
  ArtenTable.FieldByName('MaxGewicht').AsString := SWDBEdit10.Text;
  ArtenTable.FieldByName('Laichzeit').AsString := SWDBEdit11.Text;
  ArtenTable.FieldByName('MaxAlter').AsString := SWDBEdit12.Text;
  ArtenTable.FieldByName('Gruppe').AsString := SWDBComboBox1.Text;
  ArtenTable.Post;
  ArtenTable.Refresh;
  ArtenTable.Next;
  ArtenTable.Prior;
end;

procedure TForm20.SWButton2Click(Sender: TObject);
begin
case messageBox(handle,
            'Wollen sie die Zeile wirklich löschen?'
            +chr(13)+'Dabei geht die Zeile unwiderruflich verloren!',
            'Warnung',
            MB_ICONWARNING OR MB_YESNO OR MB_DEFBUTTON1)
            of
 IDNO:
   begin
     // Knopf "Nein" gedrückt
   end;
 IDYES:
   begin
     ArtenTable.Delete; // Knopf "Ja" gedrückt
   end;
 end;
end;

procedure TForm20.SWButton1Click(Sender: TObject);
begin
  SWDBEdit1.Clear;
  SWDBEdit2.Clear;
  SWDBEdit3.Clear;
  SWDBEdit4.Clear;
  SWDBEDIT5.Clear;
  SWDBEdit6.Clear;
  SWDBEdit7.Clear;
  SWDBEdit8.Clear;
  SWDBEdit9.Clear;
  SWDBEdit9.Clear;
  SWDBEdit10.Clear;
  SWDBEdit11.Clear;
  SWDBEdit12.Clear;
  SWDBEdit1.SetFocus;
  ArtenTable.Append;
end;

procedure TForm20.SWButton4Click(Sender: TObject);
begin
  ArtenTable.Cancel;
end;

procedure TForm20.Button5Click(Sender: TObject);
begin
  Close;
end;

procedure TForm20.SWSpeedButton1Click(Sender: TObject);
begin
  if OpenPictureDialog1.Execute then begin
    SWDBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  end;
end;

procedure TForm20.ArtenTableAfterScroll(DataSet: TDataSet);
begin
  if (ArtenTable.RecNo > 0then
    SWPanel1.Caption := IntToStr(ArtenTable.RecNo)
  else
    SWPanel1.Caption := '';
end;

procedure TForm20.FormCreate(Sender: TObject);
var
  i: integer;
begin
  for i:=0 to ComponentCount-1 do
  if Components[i] is TPanel then (Components[i] as TPanel).ParentBackground:=false;
end;

procedure TForm20.RadioButton2Click(Sender: TObject);
begin
MWTable.First;
// Meerwasser
  MWPanel1.Visible := true;
  MWButton1.Visible := true;
  MWButton2.Visible := true;
  MWButton3.Visible := true;
  MWButton4.Visible := true;
  MWDBGrid1.Visible := true;
  MWDBEdit1.Visible := true;
  MWDBEdit2.Visible := true;
  MWDBEdit3.Visible := true;
  MWDBEdit4.Visible := true;
  MWDBEdit5.Visible := true;
  MWDBEdit6.Visible := true;
  MWDBEdit7.Visible := true;
  MWDBEdit8.Visible := true;
  MWDBEdit9.Visible := true;
  MWDBEdit10.Visible := true;
  MWDBEdit11.Visible := true;
  MWDBEdit12.Visible := true;
  MWDBImage1.Visible := true;
  MWDBComboBox1.Visible := true;
  MWSpeedButton1.Visible := true;
  MWSpeedButton2.Visible := true;
  MWSpeedButton3.Visible := true;
  MWSpeedButton4.Visible := true;
  MWSpeedButton5.Visible := true;
  MWSpeedButton6.Visible := true;
  MWSpeedButton7.Visible := true;
  MWSpeedButton8.Visible := true;
// Süsswasser
  SWPanel1.Visible := false;
  SWButton1.Visible := false;
  SWButton2.Visible := false;
  SWButton3.Visible := false;
  SWButton4.Visible := false;
  SWDBGrid1.Visible := false;
  SWDBEdit1.Visible := false;
  SWDBEdit2.Visible := false;
  SWDBEdit3.Visible := false;
  SWDBEDit4.Visible := false;
  SWDBEdit5.Visible := false;
  SWDBEdit6.Visible := false;
  SWDBEdit7.Visible := false;
  SWDBEdit8.Visible := false;
  SWDBEdit9.Visible := false;
  SWDBEDit10.Visible := false;
  SWDBEdit11.Visible := false;
  SWDBEdit12.Visible := false;
  SWDBImage1.Visible := false;
  SWDBCombobox1.Visible := false;
  SWSpeedButton1.Visible := false;
  SWSpeedButton2.Visible := false;
  SWSpeedButton3.Visible := false;
  SWSpeedButton4.Visible := false;
  SWSpeedButton5.Visible := false;
  SWSpeedButton6.Visible := false;
  SWSpeedButton7.Visible := false;
  SWSpeedButton8.Visible := false;
end;

procedure TForm20.RadioButton1Click(Sender: TObject);
begin
ArtenTable.First;
// Süsswasser
  SWPanel1.Visible := true;
  SWButton1.Visible := true;
  SWButton2.Visible := true;
  SWButton3.Visible := true;
  SWButton4.Visible := true;
  SWDBGrid1.Visible := true;
  SWDBEdit1.Visible := true;
  SWDBEdit2.Visible := true;
  SWDBEdit3.Visible := true;
  SWDBEdit4.Visible := true;
  SWDBEdit5.Visible := true;
  SWDBEdit6.Visible := true;
  SWDBEdit7.Visible := true;
  SWDBEDit8.Visible := true;
  SWDBEdit9.Visible := true;
  SWDBEdit10.Visible := true;
  SWDBEdit11.Visible := true;
  SWDBEdit12.Visible := true;
  SWDBImage1.Visible := true;
  SWDBCombobox1.Visible := true;
  SWSpeedButton1.Visible := true;
  SWSpeedButton2.Visible := true;
  SWSpeedButton3.Visible := true;
  SWSpeedButton4.Visible := true;
  SWSpeedButton5.Visible := true;
  SWSpeedButton6.Visible := true;
  SWSpeedButton7.Visible := true;
  SWSpeedButton8.Visible := true;
// Meerwasser
  MWPanel1.Visible := false;
  MWButton1.Visible := false;
  MWButton2.Visible := false;
  MWButton3.Visible := false;
  MWButton4.Visible := false;
  MWDBGrid1.Visible := false;
  MWDBEdit1.Visible := false;
  MWDBEdit2.Visible := false;
  MWDBEdit3.Visible := false;
  MWDBEdit4.Visible := false;
  MWDBEdit5.Visible := false;
  MWDBEdit6.Visible := false;
  MWDBEdit7.Visible := false;
  MWDBEdit8.Visible := false;
  MWDBEdit9.Visible := false;
  MWDBEdit10.Visible := false;
  MWDBEdit11.Visible := false;
  MWDBEdit12.Visible := false;
  MWDBImage1.Visible := false;
  MWDBComboBox1.Visible := false;
  MWSpeedButton1.Visible := false;
  MWSpeedButton2.Visible := false;
  MWSpeedButton3.Visible := false;
  MWSpeedButton4.Visible := false;
  MWSpeedButton5.Visible := false;
  MWSpeedButton6.Visible := false;
  MWSpeedButton7.Visible := false;
  MWSpeedButton8.Visible := false;
end;

procedure TForm20.MWTableAfterScroll(DataSet: TDataSet);
begin
  if (ArtenTable.RecNo > 0then  
    MWPanel1.Caption := IntToStr(ArtenTable.RecNo)
  else
    MWPanel1.Caption := '';
end;

procedure TForm20.MWSpeedButton5Click(Sender: TObject);
begin
  MWTable.Last;
end;

procedure TForm20.MWSpeedButton6Click(Sender: TObject);
begin
  MWTable.Next;
end;

procedure TForm20.MWSpeedButton7Click(Sender: TObject);
begin

  MWTable.Prior;
end;

procedure TForm20.MWSpeedButton8Click(Sender: TObject);
begin
  MWTable.First;
end;

procedure TForm20.MWButton1Click(Sender: TObject);
begin
  MWDBEdit1.Clear;
  MWDBEdit2.Clear;
  MWDBEdit3.Clear;
  MWDBEdit4.Clear;
  MWDBEdit5.Clear;
  MWDBEdit6.Clear;
  MWDBEdit7.Clear;
  MWDBEdit8.Clear;
  MWDBEdit9.Clear;
  MWDBEdit10.Clear;
  MWDBEdit11.Clear;
  MWDBEdit12.Clear;
  MWTable.Append;
end;

procedure TForm20.MWButton2Click(Sender: TObject);
begin
case messageBox(handle,
            'Wollen sie die Zeile wirklich löschen?'
            +chr(13)+'Dabei geht die Zeile unwiderruflich verloren!',
            'Warnung',
            MB_ICONWARNING OR MB_YESNO OR MB_DEFBUTTON1)
            of
 IDNO:  
   begin
      // Knopf "Nein" gedrückt
   end;
 IDYES:  
   begin
     MWTable.Delete; // Knopf "Ja" gedrückt
   end;
 end;
end;

procedure TForm20.MWButton3Click(Sender: TObject);
begin
  MWTable.FieldByName('Fischart').AsString := MWDBEdit1.Text;
  MWTable.FieldByName('Ordnung').AsString := MWDBEdit2.Text;
  MWTable.FieldByName('Formzahl').AsString := MWDBEdit3.Text;
  MWTable.FieldByName('Kapital').AsString := MWDBEdit4.Text;
  MWTable.FieldByName('Latein').AsString := MWDBEdit5.Text;
  MWTable.FieldByName('Familie').AsString := MWDBEdit6.Text;
  MWTable.FieldByName('MaxLaenge').AsString := MWDBEdit7.Text;
  MWTable.FieldByName('Lebensraum').AsString := MWDBEdit8.Text;
  MWTable.FieldByName('Angeltechnik').AsString := MWDBEdit9.Text;
  MWTable.FieldByName('MaxGewicht').AsString := MWDBEdit10.Text;
  MWTable.FieldByName('Laichzeit').AsString := MWDBEdit11.Text;
  MWTable.FieldByName('MaxAlter').AsString := MWDBEdit12.Text;
  MWTable.FieldByName('Gruppe').AsString := MWDBComboBox1.Text;
  MWTable.Edit;
  MWTable.Post;
  MWTable.Refresh;
end;

procedure TForm20.MWButton4Click(Sender: TObject);
begin
  MWTable.Cancel;
end;

procedure TForm20.MWSpeedButton2Click(Sender: TObject);
begin
  MWTable.Edit;
  MWTable.Post;
end;

procedure TForm20.ArtenDataSourceDataChange(Sender: TObject; Field: TField);
begin
  SWDBEdit1.Text := ArtenTable.FieldByName('Fischart').AsString;
  SWDBEdit2.Text := ArtenTable.FieldByName('Ordnung').AsString;
  SWDBEdit3.Text := ArtenTable.FieldByName('Formzahl').AsString;
  SWDBEdit4.Text := ArtenTable.FieldByName('Kapital').AsString;
  SWDBEdit5.Text := ArtenTable.FieldByName('Latein').AsString;
  SWDBEdit6.Text := ArtenTable.FieldByName('Familie').AsString;
  SWDBEdit7.Text := ArtenTable.FieldByName('MaxLaenge').AsString;
  SWDBEdit8.Text := ArtenTable.FieldByName('Lebensraum').AsString;
  SWDBEdit9.Text := ArtenTable.FieldByName('Angeltechnik').AsString;
  SWDBEdit10.Text := ArtenTable.FieldByName('MaxGewicht').AsString;
  SWDBEdit11.Text := ArtenTable.FieldByName('Laichzeit').AsString;
  SWDBEdit12.Text := ArtenTable.FieldByName('MaxAlter').AsString;
  SWDBComboBox1.Text := ArtenTable.FieldByName('Gruppe').AsString;
end;

procedure TForm20.MWDataSourceDataChange(Sender: TObject; Field: TField);
begin
  MWDBEdit1.Text := MWTable.FieldByName('Fischart').AsString;
  MWDBEdit2.Text := MWTable.FieldByName('Ordnung').AsString;
  MWDBEdit3.Text := MWTable.FieldByName('Formzahl').AsString;
  MWDBEdit4.Text := MWTable.FieldByName('Kapital').AsString;
  MWDBEdit5.Text := MWTable.FieldByName('Latein').AsString;
  MWDBEdit6.Text := MWTable.FieldByName('Familie').AsString;
  MWDBEdit7.Text := MWTable.FieldByName('MaxLaenge').AsString;
  MWDBEdit8.Text := MWTable.FieldByName('Lebensraum').AsString;
  MWDBEdit9.Text := MWTable.FieldByName('Angeltechnik').AsString;
  MWDBEdit10.Text := MWTable.FieldByName('MaxGewicht').AsString;
  MWDBEdit11.Text := MWTable.FieldByName('Laichzeit').AsString;
  MWDBEdit12.Text := MWTable.FieldByName('MaxAlter').AsString;
  MWDBComboBox1.Text := MWTable.FieldByName('Gruppe').AsString;
end;

procedure TForm20.SpeedButton1Click(Sender: TObject);
begin
  Form21.ShowModal; // Vorgaben Artengruppe
end;

end.


Mfg
Tabkbrummel


Tabakbrummel - Do 24.11.05 01:16

Hi Jasocul

Ich habe es hin bekommen, es lag irgend wie an der DataCource oder TTable.
Noch mal vielen Dank für deine Mühe.

[/Edit] Geht doch nicht liegt am OnDataChange.
MFg
Tabakbrummel


jasocul - Do 24.11.05 09:12

Im OnDataChange sehe ich keine Fehler. Bitte schreibe nächstes mal, was nicht geht (Was passiert oder passiert nicht?). Das erleichtert die Fehlersuche.
Die Procedure "MWButton3Click" ist sicher falsch. Bitte wie folgt ändern:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
begin
procedure TForm20.MWButton3Click(Sender: TObject);
begin
  MWTable.Edit; // gehört hier hin.
  MWTable.FieldByName('Fischart').AsString := MWDBEdit1.Text;
  MWTable.FieldByName('Ordnung').AsString := MWDBEdit2.Text;
  MWTable.FieldByName('Formzahl').AsString := MWDBEdit3.Text;
  MWTable.FieldByName('Kapital').AsString := MWDBEdit4.Text;
  MWTable.FieldByName('Latein').AsString := MWDBEdit5.Text;
  MWTable.FieldByName('Familie').AsString := MWDBEdit6.Text;
  MWTable.FieldByName('MaxLaenge').AsString := MWDBEdit7.Text;
  MWTable.FieldByName('Lebensraum').AsString := MWDBEdit8.Text;
  MWTable.FieldByName('Angeltechnik').AsString := MWDBEdit9.Text;
  MWTable.FieldByName('MaxGewicht').AsString := MWDBEdit10.Text;
  MWTable.FieldByName('Laichzeit').AsString := MWDBEdit11.Text;
  MWTable.FieldByName('MaxAlter').AsString := MWDBEdit12.Text;
  MWTable.FieldByName('Gruppe').AsString := MWDBComboBox1.Text;
  MWTable.Post;
// Dein Refresh sollte unnötig sein.
end;

Dein AfterScroll kannst du auch rausschmeißen. Spätestens wenn du die BDE rausschmeißt und/oder auf eine richtige DB wechselst, wird dir RecNo nicht mehr die gewünschten Werte geben.
Ansonsten kannst du das auch ins MWDataSourceDataChange umlagern. Dann sparst du dir das AfterScroll.

Mehr konnte ich auf die Schnelle nicht sehen.

Benutzt du D7Pro oder D7Arch?


Tabakbrummel - Do 24.11.05 11:58

Hi Jasocul

Wenn ich ein neuen Datensatz anlege und in abspeicher funkioniert es, aber wenn ich z.B. ein Fehler eingeschlichen hat (z.B. ein Feld vergessen wird). Nun korregiere ich den fehler im TEdit und speichere. Es wird in DBGrid der korregierte Fehler nicht angezeigt und auch nicht in der Arten.db gespeichert.

Ich benutze Delphi 2005 Pro

Mfg
Tabakbrummel