Autor Beitrag
crashboy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Mi 09.07.03 11:54 
Titel: @cenbells
Der locate-Befehl wird doch erst ausgeführt, wenn ich das Edit verlasse und in dem Moment stehen doch die gescannten Daten drin, sprich der EAN als Zahlenfolge.
Probeweise habe ich einen nichtvorhandenen Artikel gescannt und dann wird ordnungsgemäß else ausgeführt.

Gruss
crashboy
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Mi 09.07.03 12:01 
hast du schon mal mit einem breakpoint die genaue zeile bestimmt, in der der fehler auftritt? das könnte ungemein helfen.

Gruß
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
crashboy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Mi 09.07.03 12:18 
Titel: @cenbells
Hab das ganze als String umprogrammiert und die Tabellen neu typisiert.
Funzt jetzt.
Jetzt nur noch die Datensätze ohne QR auf Papier bringen und fertig.

Gruss
crashboy
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mi 09.07.03 12:49 
hallo crashboy!

ausblenden Delphi-Quelltext
1:
StrToInt(DBEdit2.Text)					

das hab ich dir aber so sicherlich nicht gesagt. nimm lieber ein Edit-feld zum erfassen der menge, das ist einfacher.
den EAN-code würde ich auch als string und nicht als integer ablegen - du willst ja nicht damit rechnen.

mach deinen bericht lieber mit QR, das geht einfacher und schneller als 'zu fuss'. vor rund 2 wochen hat kiwicht hier im forum ein tolles tutorial über die anwendung von QR erstellt.

mfg, stefan
crashboy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Mi 09.07.03 14:47 
Titel: @all
Ich habe das jetzt alles als String gemacht. Problem war nur den Scanner dazu zu kriegen, die Daten nicht numerisch zu schicken. Hätte ich auch erst wieder umwandeln müssen. Nu funzt es erstmal ganz gut und ich hab viel gelernt.

Gruss
crashboy

Hab jetzt 2 allerletzte Fragen:
Soweit haut alles hin. Will aber noch eine 2. Abhängigkeit einbauen.
Die Daten sollen erst dann in die zweite Tabelle eingetragen werden, wenn beide Edit-Felder ausgefüllt sind. Das funzt aber mit dem .AND. nicht ganz.
Wie kann ich das realisieren?
Und 2. wie kann ich am einfachsten einen Tabelleninhalt löschen?

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.Edit1Exit(Sender: TObject);

begin
Table2.Append;
if Edit1.Text <>'' .AND. Edit2.Text <> '' then
begin
   if table1.locate('Artikelnr', Edit1.Text, [])  then begin
    with Table2 do begin
      FieldByName('Artikelnr').AsString:= Table1.FieldByName('Artikelnr').asString;
      FieldByName('Artikelnam').asString:= Table1.FieldByName('Artikelnam').asString;
      FieldByName('Anzahl').asString:= Edit2.Text;
      Table2.Post
    end;

  end else
   ShowMessage('EAN-Code noch nicht angelegt');
  end else
  ShowMessage('EAN-Feld darf nicht leer sein');
  end;



Gruss
crashboy


Zuletzt bearbeitet von crashboy am Mi 09.07.03 16:15, insgesamt 1-mal bearbeitet
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mi 09.07.03 14:57 
diesen satz hier versteh ich nicht:
Zitat:

die Daten nicht numerisch zu schicken...

mal langsam zum mitschreiben:
du stellst dich auf das eingabefeld es EAN-codes und liest mit dem scanner den code ein - dieser füllt das einabefeld genauso, als wenn du über die tastatur ziffer für ziffer eintippen würdest. richtig?
den inhalt des edit-feldes hast dann als string vorliegen. stimmts?

was hättest denn da hin- und herwandeln müssen?

mfg, stefan
crashboy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Mi 09.07.03 18:24 
Titel: @grayfox
Als ich die gescannten EAN's als Typ Character in meiner Tabelle Speichern wollte ging es nicht. Nur Numerisch. Sorry, war aber so.

Bin immernoch dabei die 2. If-Anweisung einzubinden. Ich platziere das dazugehörige Endfalsch. Könnte verrückt werden.
Und dann stören auch immernoch die lästigen Nachbarn weil meine LAG heute ihre Fahrprüfung bestanden hat.

Hier nochmal der derzeit funzende Code:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Edit1Exit(Sender: TObject);

begin
if Edit1.Text <>''  then
begin
   if table1.locate('Artikelnr', Edit1.Text, [])  then begin
        if Edit2.Text<> ''  then begin
    with Table2 do begin
    Table2.Append;
      FieldByName('Artikelnr').AsString:= Table1.FieldByName('Artikelnr').asString;
      FieldByName('Artikelnam').asString:= Table1.FieldByName('Artikelnam').asString;
      FieldByName('Anzahl').asString:= Edit2.Text;
      Table2.Post
    end
   end;
  end else
   ShowMessage('EAN-Code noch nicht angelegt');
  end else
  ShowMessage('EAN-Feld darf nicht leer sein');
  end;

Problem: jeder Artikel wird 2x in der 2. Tabelle abgespeichert. Einmal mit der Bezeichung des Edit2-Feldes und einmal mit der tatsächlich eingegebenen Anzahl.
Und wie gesagt, wie bekomme ich die Tabelle ohne SQL am schnellsten leer? Records zählen und ne Zählschleife bauen?

Gruss
crashboy
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mi 09.07.03 18:48 
versuchs mal so - vorsicht: untested ;)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Edit1Exit(Sender: TObject); 
begin 
  if Edit1.Text ='' then begin
    ShowMessage('EAN-Feld darf nicht leer sein');
    Exit 
  end;
 
  Table2.Append;  
  if table1.locate('Artikelnr', Edit1.Text, [])  then begin 
    with Table2 do begin 
    FieldByName('Artikelnr').AsString:= Table1.FieldByName('Artikelnr').asString; 
    FieldByName('Artikelnam').asString:= Table1.FieldByName('Artikelnam').asString; 
    FieldByName('Anzahl').asString:= Edit2.Text; 
    Table2.Post 
  end else 
    ShowMessage('EAN-Code noch nicht angelegt'); 

end;


.AND. gehört zu DBase & Clipper und wird von delphi nicht unterstützt *g*
vergleiche mit mehreren parametern schrteibt man in klammern:

ausblenden Delphi-Quelltext
1:
  if (Edit1.Text <>'') and (Edit2.Text <> '') then ...					


sieht dir mal das format des EAN-codes in der tabelle an. ist das ein ziffernfeld?

mfg, stefan
ps: gratulation unbekannterweise an deine freundin. dann feiert mal schön ;)