es sind meine ersten Schritte mit OOo Basic, daher bitte ich um Nachsicht und etwas Unterstützung.
Mein Vorhaben ist ein Dialogfenster, das auf eine Eingabe von einem Barode-Scanner wartet. Der gescannte Code soll dann in drei Teile aufgesplittet werden und im Dialogfenster in verschiedene Textfelder eingetragen werden. Soweit habe ich das auch hinbekommen, der Dialog wird angezeigt und nach dem Scannen steht der Scancode im obersten Feld. Auch funktioniert die Aufsplittung des Codes einwandfrei. Allerdings erfolgt die Anzeige in den entsprechenden Textfeldern erst, wenn ich den Dialog schließe (per Klick auf das Kreuz) und gleich wieder öffne (was ich mal so im Makro eingebaut habe). Kann man die Felder eines Dialoges nur durch erneutes öffnen desselben aktualisieren? Ich finde keinen Ansatz.
Das Schließen des Dialoges wollte ich per if-Abfrage machen. Im Forum hatte ich einen Lösungsansatz gefunden. Der Scanner liefert als Abschluß nach einem Scan ein Carriage Return. Den Aufruf habe ich an das Textfeld Scancode in das Ereignis "Text modifiziert" eingetragen. Klappt aber auch nicht, da ich die Meldung "Objektvariable nicht belegt" bekomme.
Der Dialog sieht folgendermaßen aus:
Ein gescannter Code hat folgendes Format:
11111111;222222;33333333
Der Scanner hängt dann noch ein Return dran.
Den Code hänge ich hier mal an. Ich denke, da wäre einiges verbesserungswürdig... Später wollte ich dann die einzelnen Felder in eine MySQL-Datenbank schreiben lassen - aber soweit wage ich noch gar nicht zu denken

Code: Alles auswählen
dim sScancode as string ' scancode vom Scanner
dim sPalette as string ' Palettennummer
dim sArtikel as string ' Artikelnummer
dim sMenge as string ' Menge auf der Palette
dim iPalette as long ' Palettennummer als Zahl
dim iArtikel as long ' Artikelnummer als Zahl
dim iMenge as long ' Menge als Zahl
dim datum as date ' Datentyp zuweisen
dim zeit as date
Dim readTextField As Object
Dim writeScancode As Object
Dim writePalettennummer as Object
Dim writeArtikelnummer as Object
Dim writeMenge as Object
Dim writeDatum as Object
Dim writeZeit as Object
REM ##########################################################
sub Dialog1Show
BasicLibraries.LoadLibrary("Tools")
oDialog1 = LoadDialog("Standard", "Dlg_Dateneingabe")
oDialog1.Execute()
readTextField = oDialog1.getControl("TextField1")
writePalettennummer = oDialog1.getControl("TextField2")
writeArtikelnummer = oDialog1.getControl("TextField3")
writeMenge = oDialog1.getControl("TextField4")
writedatum = oDialog1.getControl("DateField1")
writezeit = oDialog1.getcontrol("TimeField1")
sScancode = readTextField.Model.Text
' zerlegen des Scancodes in die Einzelteile und Umwandlung in Zahlen
sPalette = left(sScancode,8)
sArtikel = mid(sScancode,10,6)
sMenge = mid(sScancode,17,6)
iPalette = sPalette
iArtikel = sArtikel
iMenge = sMenge
sMenge = iMenge
datum = Date()
zeit = Time()
writePalettennummer.setText(sPalette)
writeArtikelnummer.setText(sArtikel)
writeMenge.setText(sMenge)
writedatum.setText(datum)
writezeit.setText(zeit)
oDialog1.Execute()
End Sub
Sub EnterPressed(oEvt)
' funktioniert nicht, Fehlermeldung: Objektvariable nicht belegt
taste = oEvt.keychar
if oEvt.keycode = 1280 then
oDialog1.endExecute()
endif
End Sub
Servus
Peter