PDA

Vollständige Version anzeigen : Barcodescanner, weitergabe nach Einlesen der Art.Nr. ???


Manu Maus
16.01.2003, 23:13
Hallo liebe Access Profis!!

Jetzt mal ein Problem, das mir bis jetzt noch niemand beantworten konnte.

Ich habe ein Kassendatenbank erstellt. Funktioniert alles prima. Jetzt möchte ich noch einen Scanner mit einbinden - auch kein Problem - in die Tastatur. Ist mir klar, da ich schon ein altes DOS Programm hatte mit der gleichen Funktion. Jetzt kommt das AAAABER:

Mein Kassenformular hat folgenden Aufbau:

"Menge", "Artikelnummer", "Bezeichnung", "Preis"

Die meisten Artikel kassieren wir nur 1x!!!
Ich möchte nun wie bei jedem Supermarkt die Artikel nacheinander abscannen können ohne jedes mal die Menge eingeben oder TAB drücken zu müssen.
Das Programm wartet also nach einscannen und aufrufen des Artikels, schon auf die nächste Artikel Nummer.

Wenn die Menge anderst wäre, gebe ich die Menge schon vorher eine andere Zahl ein und betätige dann erst den Scanner.

Genaus so funktionierte bisher das alte DOS Programm. Dann kann ACCESS 2000 das doch locker. Oder?

Besten Dank für Eure antworten!

Grüße
Manu :angel:

A.S.
17.01.2003, 05:22
Hallo Manu,

Du hast 2 Möglichkeiten:

Entweder die Menge manuell vorzugeben oder die Menge über die eingescannte Artikelnummer kontinuierlich zu erhöhen.

Generell mußt Du den Barcodescanner entweder über ein geeignetes Control/Steuerelement (sofern ein solches im Lieferumfang des Scanners enthalten ist) abfragen und die Verarbeitung über dessen Ereignisse steuern oder über den Timerintervall und die Timer-Ereignisprozedur in gewissen intervallen die Scannerschnittstelle abfragen.

Sobald über die Schnittstelle eine Artikelnummer gemeldet wird, prüfst Du die Tabelle mit den Positionsdaten zum aktuellen zu erfassenden Kassenbon auf vorhandensein der Artikelnummer. Ist die ArtNr vorhanden setzt Du die Menge entsprechend per Aktualisierungsabfrage um 1 Mengeneinheit nach oben, ist sie nicht vorhanden fügst Du sie über eine Anfügeabfrage an die Positionstabelle an und setzt die Menge auf 1 (bzw. die zum Produkt gehörende Menge).

Da die technische Realisierung der Scannerabfrage davon abhängig ist, wie Dein Scanner bzw. dessen Treiber arbeiten und wie die API desselben aussieht, läßt sich von hier aus natürlich nicht beantworten wie die Scannerabfrage umzusetzen ist.

Gruß

Arno

SEP
17.01.2003, 07:09
Hallo Manu,

funktioniert ganz einfach (ohne Control oder Timerereignis):

der Scanner erzeugt in seiner gelieferten Ausgangskonfiguration die gelesene Zeichenfolge gefolgt von einer "Enter" -Eingabe. So funktioniert das sicherlich auch in Deinem Dos-Programm.
Das entspricht einer Eingabe in das entsprechende Feld, die das Ereignis nach Aktualisierung auslöst.

1. Dein Formular enthält ein Feld Menge, Standartwert 1. Hier kann eine andere Menge eingegeben werden. Danach geht der Focus zu 2.

2. Ein weiteres Feld ist das Eingabefeld. Das hat den Focus. Dort gibst Du die Artikelnummer mit Tastatur oder Scanner ein. In der Eigenschaft Ereignis nach Aktualisierung lässt Du den entsprechenden Artikel (Datensatz) mit entsprechendem Code oder Makro suchen. Ergebnis:

Nicht gefunden: Meldung "Artikel nicht gefunden".
Gefunden: Der Datensatz wird mit der Menge aus 1. Feld Menge sowie den weiteren im Datensatz enthaltenen Angaben (z.B. Preis, MwSt-Satz u.s.w.)
z.B. an eine Temp. Tabelle Bon angefügt oder anders verarbeitet.

es grüßt Jens :)

A.S.
17.01.2003, 08:26
@Jens,

sicherlich "funktioniert das ganze Einfach", wenn man nicht weiß über welches Produkt man spricht und wie die Eingabewege dieses Produkts sind!!!!

Arno

racoon0506
17.01.2003, 08:32
Moin.

Könnte mir das folgendermassen vorstellen (sofern es sich um Scanner handelt, die tatsächlich nur eine Tastatureingabe simulieren)

Über das Eingabefeld Menge ein ungebundenes Textfeld legen, welches auch zuerst den Focus bekommt.
Nach Aktualisierung (sprich nach Eingabe in dieses Feld) überprüfen, ob der Inhalt (ist in diesem Fall ja ein String) 13-stellig ist (bei EAN-Codes).
...if len(Me!Textfeld)=13 then.....
Ist dies der Fall, dem Feld Artikelnummer den gerade eingegebenen Wert übergeben und dem Feld Menge eine 1 zuweisen. Anschliessend zum nächsten DS.
Ist die Bedingung nicht erfüllt (wer kauft schon einen Artikel mit einer Menge von 1.000.000.000.000 oder mehr???), dann kann es sich hier nur um eine Mengenkorrektur handeln. Dem Feld Menge Me!Menge=Val(Me!Textfeld) zuweisen und den Focus auf Artikelnummer setzen.

Inwieweit man von dem gerade angelegten DS dieses temporäre Eingabefeld nach Ausführung der Prüfung noch unsichtbar darstellt, sodass das Mengenfeld wieder vorhanden ist, sei mal offen gelassen.

SEP
17.01.2003, 08:44
Hallo Arno,

Manu schrieb ja von der Einbindung in die Tastatur, also bin ich davon ausgegangen, das der Strichcodeleser ohne jede eigene Software auf dem PC funktioniert, anders bei Scannern die z.B. mit der Seriellen Schnittstelle mit dem PC verbunden sind.
Da Manu ja schon ein Kassenprogramm (Dos) hat, und dort ein Scanner vorhanden ist, bin ich von den in dieser Branche üblichen Typen ausgegangen. Das sind in der Regel die von mir angenommenen Geräte (ohne Software auf dem PC).

Ich wollte mit meiner Aussage lediglich das "Generell mußt Du ..." u.s.w. etwas relativieren, da es ja in der Tat (entsprechenden Scanner vorrausgesetzt) einfacher geht und Manu damit einen weiteren Lösungsweg aufzeigen.

es grüßt Jens :)

Manu Maus
18.01.2003, 09:33
Hallo und herzlichen Dank Ihr Alle, die Ihr Euch so regen an diesem Thema beteiligt habt!!

Ich muß tatsächlich bei dieser Sache von jedem Betrag die Lösungen heranziehen.
Mein Scanner ist ein "normales" Gerät ohne irgentwelche Software. Wenn ich es mit dem hinbekomme, scheint es tatsächlich so zu sein das dieser Scanner nach der Eingabe eine <Return> schickt.

Sollte es nicht funktionieren, muß ich in Betracht ziehen einen anderen Scanner mit entsprechender Software zu kaufen. Und dann weiß ich jetzt ja auch schon was zu tun ist!!

Herzlichen Dank nochmal!!

Gruß
Manuela

SEP
18.01.2003, 09:55
Hallo Manu,

ob Dein Scanner nach dem Scannen ein "Enter" sendet, kannst Du wie folgt feststellen:

Öffne ein beliebiges Textprogramm (z.B. Editor, NotePad, WordPad, Word...)
und Scanne einen Code.
Es wird die gescannte Zeichenfolge in Dein Textprogramm geschrieben. Findet danach ein Zeilenwechsel statt, so sendet Dein Scanner das "Enter".
Liest Du mehrere Strichcode nacheinander ein, so erscheinen diese in Deinem Textprogramm untereinander.

Wenn Dein Scanner diese Vorraussetzung erfüllt (was ich annehme), so kannst Du ihn für Deine Anwendung optimal verwenden, denn nach dem Scannvorgang wird das Ereignis "nach Aktualiesierung" des Eingabefeldes ausgelöst. Danit kannst Du dann im Programmablauf weiterarbeiten.

es grüßt Jens :)

Hütti
18.01.2003, 13:25
ich arbeite auch sehr viel mit scannern an pcs...

wenn es keine eigene software gibt, sondern der scanner in das tastaturkabel eingescheift ist, dann gibt es eine hardwareprogrammierung.

vom hersteller oder vertreiber kann man ein codeblatt erhalten, mit dem man den scanner konfigurieren kann.

solltest du das nicht bekommen kann man einen kleinen trick anwenden.
sofern die barcodes immer gleichlang sind, kannst du in access das eingabe feld mit einem EINGABEFORMAT definieren.

zb. 10 Stelliger BArcode = 9999999999

dann definierst du in den eigenschaften des feldes "automatisch weiter" = JA.
daraufhin kannst du ein ereignis auslösen, das den barcode prüft o.ä.

hoffe das hilft dir ein bisserl. :cool: