Autor Beitrag
Templar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 14.11.02 09:57 
Guten Morgen.

Ich habe mal wieder ein Problemchen mit meinem Prog.
Bisher sollte in meine Db nur geschrieben werden. Also Daten löschen war nicht erforderlich. Damit Daten nicht 2-mal vorkamen habe ich vor dem einlesen einen spezifieschen Teil der neuen Daten in eine Listbox geschrieben und diese in einer .TXT gespeichert.
Nun wenn aber jetzt Daten aus der DB gelöscht werden, stehen die ja immernoch in der Listbox und werden daher nicht wieder neu übernommen, falls die Datensätze schonmal drinnen waren. Habe versucht mir den Navigator einzusparen und ihn slebst programmiert um an den "Löschen-Button" noch was dranzuhängen damit dieser wenn der Datensatz XYZ mit der Indexnummer 0122332 gelöscht wird auch diese Nummer aus der Listbox löscht. Leider haut das nicht hin.
Also hab ich dne Navigator wieder reingepackt.
Ich hoffe mein Problem ist verständlich dargestellt und ich hoffe ihr könnt mir helfen.

MFG

_________________
a metal heart is hard to tear apart
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Do 14.11.02 10:24 
Hi
Am einfachsten könntest du das im BeforeDelete bzw. AfterDelete Ereignis der Tabelle machen. Bei BeforeDelete legst du den Schlüssel in einer Variablen ab, bei AfterDelete löscht du noch die Information aus deiner Liste.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Templar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 14.11.02 10:34 
Ich hab grad nochmal ein bischen mit dem Prog. experimentiert.
Dabei ist es abgestürzt, als ich keine Daten in der Listbox hatte aber in dem Grid. Wollte ich den selben Datensatz hinzufügen *plof* Ende.
Wäre es nicht möglich das irgendwie so hinzubiegen, das es eine Meldung gibt und das Prog. nicht absürzt. So könnte ich mir doch die Listbox mit den Elemtent zum vergleichen sparen, oder?

_________________
a metal heart is hard to tear apart
MrSpock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Do 14.11.02 13:36 
Hallo Templar,

üblicherweise überprüft man das Vorhandensein von Daten über Funktionen, die die Datenbank liefert. Da wäre zum Beispiel FindKey, wenn es sich um ein oder mehrere Indexfelder handelt oder eine SQL Abfrage, die prinzipiell beliebige Felder einschließen kann. Der Umweg über eine Texdatei scheint daher recht kompliziert.

Wenn es aber nicht anders geht, ist die Frage, warum der Absturz stattfindet. Ich vermute, dass du versuchtst auf Elemente der Listbox zuzugreifen, die gar nicht existieren. Daher wäre eine vorherige Abfrage mit Items.Count über die Anzahl der Zeilen in der LB sinnvoll. Grundsätzlich solltest du Zugriffe, die kritisch sein können, nur in try ... except Blocks packen, damit ein Fehlgriff nicht zu einem Verlassen des Programms, sondern zu einer geregelten Reaktion führen.

_________________
Live long and prosper
MrSpock \\//
Templar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 14.11.02 13:54 
Ich glaub ich habe mich etwas falsch ausgedrückt.
Ob jetzt was in der Listbox steht ist eigentlich in diesem Fall wurscht.
Sicher ist der Weg über die Listbox kompliziert. Also versuche ich es nochmal der Reihe nach zu erklären.

Listbox1 : Anzeige der geladenen Daten
Einlesen.Button : Liest die Daten der Listbox1 in DB edits, sofern die Nummer z.B. 123 nicht schon in Listbox2 vorhanden ist.
->Vorhanden: Meldung ->löschen der Daten ->nächste Daten
-> nicht Vorhanden ->Butten.Packen packt die Daten aus den DB Edits in den Grid.

Funktion Listbox2: Sammeln der Nummern und sichern in .TXT Datei
Problem. Bei löschen von Daten aus dem Grid bleiben die Daten in der TXT (logisch).

Frage: Gibt es eine Funktion oder Routine um das löschen eines Datensatzes, welcher zb. Nummer mit dem Eintrag 123 als Index ermöglicht.
Gleichzeitig dann aber auch den Satz aus der Listbox2 entfernt, wo die Nummer ebenfalls drinsteht.

Oder eben eine ganz andere Möglichkeit.
Listbox2 weglassen.
Problem.
Beim Versuch ohne die Listbox Einen Datensatz mit der Selben nummer in das Grid zu packen ist das Prog. ausgestiegen.

Frage: Gibt es eine Möglichkeit das zu verhindern? Wenn ja, wie?

Ich hoffe das dies etwas besser zu verstehen ist

MFG

_________________
a metal heart is hard to tear apart
MrSpock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Do 14.11.02 21:36 
Titel: !
Templar hat folgendes geschrieben:
Listbox1 : Anzeige der geladenen Daten

Was genau meinst du mit geladenen Daten? Du arbeitest, wenn ich den Titel richtig verstehe, arbeitest du mit Paradox. Wie lädtst du dann Daten? Über eine SQL Abfrage?

Zitat:

Einlesen.Button : Liest die Daten der Listbox1 in DB edits, sofern die Nummer z.B. 123 nicht schon in Listbox2 vorhanden ist.


Bevor du Daten in DBEdits liest, musst du die zugrundeliegende DB in den Edit oder Insert Zustand bringen.

Zitat:

->Vorhanden: Meldung ->löschen der Daten ->nächste Daten.

Welche Daten sind wo vorhanden?

Zitat:

-> nicht Vorhanden ->Butten.Packen packt die Daten aus den DB Edits in den Grid.

Was denn jetzt für ein Grid? Ein DBGrid? Das wäre ja dann mit einer DB verbunden!? Ist das diesselbe Tabelle, auf die auch die DBEdits verweisen?

Zitat:

Funktion Listbox2: Sammeln der Nummern und sichern in .TXT Datei
Problem.

Sammeln welcher Nummern?

Zitat:

Bei löschen von Daten aus dem Grid bleiben die Daten in der TXT (logisch).

Wie löscht du Daten aus dem Grid? Meinst du Löschen eines Datensatzes aus der Tabelle, die in dem Grid angezeigt wird?

Zitat:

Frage: Gibt es eine Funktion oder Routine um das löschen eines Datensatzes, welcher zb. Nummer mit dem Eintrag 123 als Index ermöglicht.

Verstehe ich dich richtig: Du möchtest den Satz aus einer Tabelle löschen, dessen Indexfeld den Wert 123 hat? Falls ja:
ausblenden Quelltext
1:
2:
3:
4:
if theTable.FindKey([123]) then
  theTable.Delete
else
  ShowMessage('Der Datensatz existiert nicht.');


Zitat:

Gleichzeitig dann aber auch den Satz aus der Listbox2 entfernt, wo die Nummer ebenfalls drinsteht.

Wie bereits von LCS beschrieben, kannst du das BeforeDelete Ereignis benutzen, um den Eintrag aus der LB2 zu löschen.

Zitat:

Oder eben eine ganz andere Möglichkeit.
Listbox2 weglassen.
Problem.
Beim Versuch ohne die Listbox Einen Datensatz mit der Selben nummer in das Grid zu packen ist das Prog. ausgestiegen.

Ich bin überzeugt, dass es ohne LB2 besser geht, aber ich habe das ganze Programm leider noch nicht verstanden :nut:
[/code][/quote]

_________________
Live long and prosper
MrSpock \\//
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 15.11.02 11:13 
Hi
Templar hat folgendes geschrieben:

Problem.
Beim Versuch ohne die Listbox Einen Datensatz mit der Selben nummer in das Grid zu packen ist das Prog. ausgestiegen.

Frage: Gibt es eine Möglichkeit das zu verhindern? Wenn ja, wie?

Wenn dabei dein Programm aussteigt, hast du in der Tat ein Problem :roll:
Im Normalfall wird bei einem doppel Wert im Primary Key eine Exception ausgelöst. Wenn du das im OnPostError Ereignis der Tabelle abfängst, kann auch niemand einen doppelten Wert eintragen und du sparst dir eine Menge Arbeit.

Alternativ dazu könntest du bei OnBeforePost mittels SQL abfragen, ob ein Datensatz mit dem eingegebenen Schlüssel schon existiert und an dieser Stelle schon den Anwender darauf hinweisen.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Templar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Di 19.11.02 10:17 
Hi
Zitat:

Im Normalfall wird bei einem doppel Wert im Primary Key eine Exception ausgelöst. Wenn du das im OnPostError Ereignis der Tabelle abfängst, kann auch niemand einen doppelten Wert eintragen und du sparst dir eine Menge Arbeit.


Fehlermeldung:

Im Projekt blubblub.exe ist eine Exception der klasse DBengineError aufgetreten. Meldung: "Indexfehler". Prozeß wurde angehalten, mit.... fortsetzen.

Wie Schaffe ich es also dies zu verhindern?

MFG
Templar

_________________
a metal heart is hard to tear apart
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Di 19.11.02 10:49 
mit

try
....
except
....
end;

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
Templar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Di 19.11.02 12:13 
:eyecrazy: Mensch bin schon voll verwirrt.

Das mit dem
try
....
except
....
end;

muss jetzt aber nich in das OnPostError oder?
Des muss doch beim schreiben bzw. davor geschehen?

:eyecrazy:

Und wie soll ich über prüfen ob die Sch***** schon da drinne steht?
Also wenn ich das richtig verstehe soll ich versuchen den neuen Inhalt mit try zu schreiben, quasi

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
 try
Table1.append
neue daten
table1.post
except
daten schon vorhanden
Showmessage('Blup')
end;

oder?

_________________
a metal heart is hard to tear apart
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 19.11.02 13:18 
Hi
Beim OnPostError brauchst du die Exception nicht abzufangen. Diese Routine wird ja als Reaktion auf den Fehler durchlaufen. Die Darstellung der Fehlermeldung kannst du innerhalb dieser Routine unterdrücken, wenn du die Variable Action auf daAbort setzt.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Templar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Di 19.11.02 15:19 
Hi.

Welche Variable action denn?

Ich versteh nix mehr

_________________
a metal heart is hard to tear apart
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 19.11.02 15:27 
Die Variable Action die im Prozedurkopf einer OnPostError-Routine steht :roll:
ausblenden Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
  Action := daAbort;
end;


Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Templar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Di 19.11.02 15:42 
Hi

Ich habe das getan was du gesagt hast, und ich bekomme dennoch die Fehlermeldung.

Ich glaub ich schick mal den ganzen Progicode mit. Hoffentlich kann euch(mir) das helfen.
ausblenden volle Höhe 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:
unit Anmeldung_u;

interface

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

type
  TAnmeldung = class(TForm)
    Anmeldungen_L: TLabel;
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    Panel2: TPanel;
    BitBtn1: TBitBtn;
    Vorname_L: TLabel;
    Name_L: TLabel;
    Nr_L: TLabel;
    Stdg_L: TLabel;
    Email_L: TLabel;
    Tel_L: TLabel;
    Nr_E: TDBEdit;
    Stdg_E: TDBEdit;
    Email_E: TDBEdit;
    Tel_E: TDBEdit;
    angemeldet_E: TDBEdit;
    Gruppe_E: TDBEdit;
    angemeldet_L: TLabel;
    Gruppe_L: TLabel;
    OpenDialog1: TOpenDialog;
    Table1: TTable;
    DataSource1: TDataSource;
    Einlesen: TButton;
    loeschen: TButton;
    ListBox1: TListBox;
    absolviert_L: TLabel;
    absolviert_E: TDBEdit;
    Matr_E: TEdit;
    Matr_L: TLabel;
    Vergleichen: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Vorname_E: TDBEdit;
    Name_E: TDBEdit;
    DBCheckBox3: TDBCheckBox;
    DBCheckBox2: TDBCheckBox;
    Label3: TLabel;
    DBNavigator1: TDBNavigator;
    Memo1: TMemo;
    procedure LadenClick(Sender: TObject);
    procedure EinlesenClick(Sender: TObject);
    procedure loeschenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure VergleichenClick(Sender: TObject);
    procedure DBCheckBox2Click(Sender: TObject);
    procedure Table1AfterScroll(DataSet: TDataSet);
    procedure Table1PostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);

  private

  public
    { Public-Deklarationen }
  end;

var
  Anmeldung: TAnmeldung;

implementation
//------------------------------------------------------------------------------
//Durchsucht die 2.Listbox ob der Eintrag schon vorhanden ist
function vorhanden (Listbox2 : TListBox; eintrag : String):Boolean;
var I: integer;
begin
     Result := True;
     for i:=0 to Listbox2.Items.Count-1 do if Listbox2.Items[i] = eintrag then
         begin
              Listbox2.index := i;
              Exit;
         end;
     Result := False;
end;
{$R *.DFM}


//------------------------------------------------------------------------------
//Verantwortlich für das Laden der Dateien
procedure TAnmeldung.LadenClick(Sender: TObject);
var
Zeile: string;
Fehler: integer;
Datei: textfile;

begin
dbcheckbox2.checked := false;
dbcheckbox3.checked := false;
     if (Opendialog1.Execute) then
     begin
          assignfile (Datei,Opendialog1.Filename);
          {$I-}
          reset (Datei);
          {$I+}
          Fehler := IOResult;
          if (Fehler>0) then
             begin
               Showmessage ('Datei-öffnen-Fehler');
               exit;
             end;
          repeat
                {$I-}
                readln (Datei,Zeile);
                {$I+}
                Fehler := IOResult;
                if (Fehler>0) then
                   begin
                        Showmessage ('Datei-lesen-Fehler');
                        closefile (Datei);
                        exit;
                   end;
                Listbox1.Items.Add (Zeile);
          until
               (EOF(Datei));
               closefile (Datei);
     end;
Label3.caption := 'Die Listbox hat '+ inttostr(Listbox1.Items.count) +' Zeilen';

if (Listbox1.Items.count > 0) then
   begin
        loeschen.enabled := true;
        Vergleichen.enabled := true;
   end;
end;

//------------------------------------------------------------------------------
//Verantwortlich für die Übernahme aus der Listbox in das DBGrid
procedure TAnmeldung.EinlesenClick(Sender: TObject);
var
Zeile: string;
Vorname, Name, Nr, Stdg, Email, Tel, angemeldet, Gruppe : string;
posi: integer;

begin
Zeile := Listbox1.Items[1];
posi := 2;

if (Zeile[posi]<>'"') then
   begin
        repeat
              Nr := Nr + Zeile[posi];
              posi := posi+1;
        until
             (Zeile[posi] = '"');
   end
else
    begin
         Showmessage ('Kein Eintrag');
    end;

posi := posi+3;
if (Zeile[posi]<>'"') then
   begin
             repeat
                   Name := Name + Zeile[posi];
                   posi := posi+1;
             until
                  (Zeile[posi] ='"');
   end
else
    begin
         Showmessage ('Kein Eintrag');
    end;

posi := posi+3;
if (Zeile[posi]<>'"') then
   begin
             repeat
                   Vorname := Vorname + Zeile[posi];
                   posi := posi+1;
             until
                  (Zeile[posi] ='"');
   end
else
    begin
         Showmessage ('Kein Eintrag');
    end;

posi := posi+3;
if (Zeile[posi]<>'"') then
   begin
             repeat
                   Stdg := Stdg + Zeile[posi];
                   posi := posi+1;
             until
                  (Zeile[posi] ='"');
   end
else
    begin
         Showmessage ('Kein Eintrag');
    end;

posi := posi+3;
if (Zeile[posi]<>'"') then
   begin
             repeat
                   Email := Email + Zeile[posi];
                   posi := posi+1;
             until
                  (Zeile[posi] ='"');
   end
else
    begin
         Showmessage ('Kein Eintrag');
    end;

posi := posi+3;
if (Zeile[posi]<>'"') then
   begin
             repeat
                   Tel := Tel + Zeile[posi];
                   posi := posi+1;
             until
                  (Zeile[posi] ='"');
   end
else
    begin
         Showmessage ('Kein Eintrag');
    end;

posi := posi+3;
if (Zeile[posi]<>'"') then
   begin
             repeat
                   angemeldet := angemeldet + Zeile[posi];
                   posi := posi+1;
             until
                  (Zeile[posi] ='"');
   end
else
    begin
         Showmessage ('Kein Eintrag');
    end;

posi := posi+3;
if (Zeile[posi]<>'"') then
   begin
             repeat
                   Gruppe := Gruppe + Zeile[posi];
                   posi := posi+1;
             until
                  (Zeile[posi] ='"');
   end
else
    begin
         Showmessage ('Kein Eintrag');
         Showmessage ('Kein Feld dieser Anmeldung wurde ausgefüllt');
    end;

table1.append;
              Nr_e.Text := Matrnr;
              Name_e.Text := Name;
              Vorname_e.Text := Vorname;
              Stdg_e.Text := Stdg;
              Email_e.text := Email;
              Tel_e.text := Tel;
              angemeldet_e.text := angemeldet;
              Gruppe_e.text := Gruppe;
table1.post;

Listbox1.Items.Delete(1);
end;

//------------------------------------------------------------------------------
//Verantwortlich für das Löschen der 1. Listbox
procedure TAnmeldung.loeschenClick(Sender: TObject);
begin
     Listbox1.clear;
     einlesen.enabled := false;
     Vergleichen.enabled := false;
     loeschen.enabled := false;
end;

//------------------------------------------------------------------------------
//Checkboxen deaktivieren; Angabe ob DB fehlt; Laden Der TXT-Matrikelnummern
procedure TAnmeldung.FormCreate(Sender: TObject);
var
verz : string;
begin
     dbcheckbox2.checked := false;
     dbcheckbox3.checked := false;
     verz := ExtractfilePath(ParamStr(0));
     Table1.active := false;
     try
     Table1.DatabaseName := verz;
     Table1.Tablename := 'Melden.db';
     Table1.active := true;
     except
     Messagebeep(0);
     Showmessage('Die Tabelle Melden.db befindet' + #10#13 + 'sich nicht im aktuellen Verzeichnis');
end;
Showmessage ('Bevor Sie die Daten der .CSV in der Datenbank speichern, müssen Sie die Matrikelnummer vergleichen.');
Memo1.Lines.LoadfromFile('Nr.txt');
end;

//------------------------------------------------------------------------------
//Verantwrotlich für das Vergleichen de Matrikelnummern
procedure TAnmeldung.VergleichenClick(Sender: TObject);
var

Matrnr : string;
Zeile : string;
posi,i : integer;
begin
     Label3.visible := true;
     Label3.caption := 'Die Listbox hat '+ inttostr(Listbox1.Items.count) +' Zeilen';
 for I:= Listbox1.Items.Count to 1 do
     begin
          if (Listbox1.Items.count > 1) then
             begin
                  loeschen.enabled := true;
                  Einlesen.enabled := true;
             end
          else
              begin
                   ShowMessage ('Es sind keine weiteren Einträge zum übernehmen vorhanden.Die Listbox wird jetzt geleert!');
                   Listbox1.clear;
                   vergleichen.enabled := false;
                   loeschen.enabled := false;
                   einlesen.enabled := false;
                   Label3.caption := 'Die Listbox hat '+ inttostr(Listbox1.Items.count) +' Zeilen';
                   exit;
              end;
     end;

Zeile := Listbox1.Items[1];
     posi := 2;

if (Zeile[posi]<>'"') then
   begin
        repeat
              Nr := Nr + Zeile[posi];
              posi := posi+1;
        until
             (Zeile[posi] = '"');
   end;
   Matr_e.Text := Nr;

     {if vorhanden(Memo1,Matr_e.text) then
     begin
     Showmessage('Diese Nummer ist schon vorhanden');
     Einlesen.enabled := false;
     Listbox1.Items.Delete(1);
     end
     else
     begin
     Memo1.Lines.Add (Matr_e.text);
     Memo1.Lines.Savetofile('D:\Delphi-Projekte\NR.txt');
     Einlesen.enabled := true;
     end;}
     Label3.caption := 'Die Listbox hat '+ inttostr(Listbox1.Items.count) +' Zeilen';
end;

//------------------------------------------------------------------------------
//Aktiviert das Editfeld Absloviert am
procedure TAnmeldung.DBCheckBox2Click(Sender: TObject);
begin
     Absolviert_E.enabled := DBcheckbox2.checked;
end;

//------------------------------------------------------------------------------
//Aktiviert das Editfeld Absolviert am
procedure TAnmeldung.Table1AfterScroll(DataSet: TDataSet);
begin
     Absolviert_E.Enabled := DBcheckbox2.Checked;
     Absolviert_e.Color := clwindow;
end;


procedure TAnmeldung.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
     Action := daAbort;
     Showmessage ('Sack');
end;

end.


Mit ganz freundlichen Grüßen

Templar

_________________
a metal heart is hard to tear apart


Zuletzt bearbeitet von Templar am Di 19.11.02 15:51, insgesamt 1-mal bearbeitet
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Di 19.11.02 15:46 
Bekommst du die Fehlermeldung auch außerhalb der IDE?

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 19.11.02 15:52 
Das wäre jetzt auch meine nächste Frage gewesen :mrgreen:

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Templar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Di 19.11.02 15:53 
Ausserhalb der Wer? IDE?

MFG Templar

_________________
a metal heart is hard to tear apart
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Di 19.11.02 15:58 
@LCS

Soll ich?

OK

IDE ist deine Entwicklungsumgebung (Intergrated development environment). Starte mal die EXE direkt

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
Templar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Di 19.11.02 16:12 
Sowas muss einem ja auch mal gesagt werden :roll:
Bin halt nicht der Supercrack auf dem Gebiet.
Nun aber zum Thema.
Nein, ich bekomme die Meldung net, zum Glück.
Aber das Prog schreibt den Satz erstma rein, aber tut den net speichern.
Am bsten löse ich das doch mit dem Try beim Button einlesen (Ich hoff ihr versteht meinen Quelltext) oder?

_________________
a metal heart is hard to tear apart