Beim öffnen neuen Datensatz erstellen

Hallo,

ist es irgendwie möglich beim öffnen einer Ansicht folgendes zu machen:

  1. einen neuen Datensatz erstellen (Neu)
  2. in ein bestimmtes Feld springen (Fokus)
  3. Datensatz bei drücken der Eingabetaste in dem Feld abspeichern (Enter ->
    Speichern)

Es geht um das Abfangen eines Barcodescanners. Dieser könnte natürlich auch
ein TAB mitgeben, aber mit der Eingabetaste wäre es sinnvoller.

Vielen Dank

David

Hi David,

ich würde das anders lösen, nämlich mit einem Script und darin mit einer
InputBox: die „Eingabe“ ist der gescannte Code und ENTER schließt den
Dialog, danach wird dann erst der Datensatz per Script erzeugt, das Feld
gesetzt und per Script wegschrieben. Das Script könnte anschließend die
InputBox ja wieder (endlos bis ‚Abbrechen‘ gedrückt bzw
eingelesen wird) bringen, so dass man ratz-fatz eine ganzen Stapel von
Kartons (=Barcode) „erfassen“ kann.

Gruss

Alex.


CRM-Leitsatz: „Das einzige, was wirklich stört, ist der Kunde!“ :wink:

Hallo Alex,

vielen Dank für die Antwort. Wo platziere ich dann das Script? In einem View
und starte es dann mit einem Button?
Autostart beim öffnen geht auch nicht, oder?

Danke

David

„Alexander Scholz“ <alexander.scholz@xmai…> schrieb im Newsbeitrag
news:421091162008161939@combit.net…

Hi David,

ich würde das anders lösen, nämlich mit einem Script und darin mit einer
InputBox: die „Eingabe“ ist der gescannte Code und ENTER schließt den
Dialog, danach wird dann erst der Datensatz per Script erzeugt, das Feld
gesetzt und per Script wegschrieben. Das Script könnte anschließend die
InputBox ja wieder (endlos bis ‚Abbrechen‘ gedrückt bzw
eingelesen wird) bringen, so dass man ratz-fatz eine ganzen Stapel von
Kartons (=Barcode) „erfassen“ kann.

Gruss

Alex.


CRM-Leitsatz: „Das einzige, was wirklich stört, ist der Kunde!“ :wink:

Hi David,

Wo platziere ich dann das Script? In einem View
und starte es dann mit einem Button?

Ja, das würde ich so machen (Button namens „Datensätze per Barcode-Leser
erfassen…“, o.ä.), damit der Anwender explizit weiß, was er tut und
was passiert. Wenn du das autom. machst (s.u.), dann läuft das Script ja
auch für jemanden los, der evtl. gar keinen Barcodescanner installiert
hat und/oder die eingescannten Dinge nur ansehen bearbeiten muss/will
aber keine neue erfassen. ->solche impliziten Automatismen provozieren
m.E. nur Probleme, weil sie erklärungsbedürftig sind.

Autostart beim öffnen geht auch nicht, oder?

Doch. Such mal in der OLE Dokumentation nach dem Stichwort „Ereignisse“.
Ich würde es aber aus vorgenannten Gründen nicht machen.

Gruß

Alex


CRM-Leitsatz: „Das einzige, was wirklich stört, ist der Kunde!“ :wink:

Vielen Dank Alex!

Ich bin schon etwas weiter.
Woran ich noch verzweifle sind zwei Dinge:

  1. Die Eingabetaste (die ja der Scanner nach dem Scan „betätigt“) kann nicht
    an eine Schalfläche gebunden werden.
  2. Wenn ich den Datensatz per Script speichere, fragt er trotzdem noch, ob
    der Datensatz gespeichert werden soll.

Das Script sieht im Moment so aus:

— Auszug Start—
'Datensatz sperren
oRecord.Lock

'Datensatz speichern
oRecord.Save

'Ansicht aktualisieren
cRM.CurrentProject.ActiveViews.ActiveView.Update

'Datensatz entsperren
oRecord.Unlock

'Neuen Datensatz erstellen
cRM.CurrentProject.ActiveViews.ActiveView.StartEditNew
— Auszug Ende —

Der Ablauf soll folgender sein:

  • Vor dem ersten Scan auf „Neu“
  • Scannen (Scan wird in das einzige Textfeld im View eingetragen)
  • Script Datensatz speichern („betätigen“ der Entertaste durch den Scanner)
  • Script Datensatz neu
  • usw.

Vielen Dank für die Hilfe!

David
„Alexander Scholz“ <alexander.scholz@xmai…> schrieb im Newsbeitrag
news:28583119200894131@combit.net…

Hi David,

Wo platziere ich dann das Script? In einem View
und starte es dann mit einem Button?

Ja, das würde ich so machen (Button namens „Datensätze per Barcode-Leser
erfassen…“, o.ä.), damit der Anwender explizit weiß, was er tut und
was passiert. Wenn du das autom. machst (s.u.), dann läuft das Script ja
auch für jemanden los, der evtl. gar keinen Barcodescanner installiert
hat und/oder die eingescannten Dinge nur ansehen bearbeiten muss/will
aber keine neue erfassen. ->solche impliziten Automatismen provozieren
m.E. nur Probleme, weil sie erklärungsbedürftig sind.

Autostart beim öffnen geht auch nicht, oder?

Doch. Such mal in der OLE Dokumentation nach dem Stichwort „Ereignisse“.
Ich würde es aber aus vorgenannten Gründen nicht machen.

Gruß

Alex


CRM-Leitsatz: „Das einzige, was wirklich stört, ist der Kunde!“ :wink:

Hi David,

  1. Die Eingabetaste (die ja der Scanner nach dem Scan „betätigt“) kann nicht
    an eine Schalfläche gebunden werden.

Mein Ansatz war, dass du ein Script schreibst, welches in einer Schleife
per InputBox die eingescannte Artikelnummer einliest und dann den
Datensatz erzeugt (das ENTER des Barcode-Scanners wird die InputBox
autom. „schliessen“). Also im Pseudocode (hab keine Zeit das syntaktisch
genau zu checken) so:

set oCurrentRecordSet =
cRM.CurrentProject.ActiveViews.ActiveView.CurrentRecordSet
do
sArtikelNummer = InputBox(„Artikelnummer jetzt einscannen (Eine leere
Eingabe beendet die Erfassung)“, „Erfassung neuer Artikel“)
if not sArtikelNummer = „“ then
begin
set oNewRecord = oCurrentRecordSet.NewRecord
oNewRecord.SetContentsByName „ArtikelNr“, sArtikelNummer
oNewRecord.Save
oNewRecord.Unlock
set oNewRecord = Nothing
end if
loop until sArtikelNummer = „“
set oCurrentRecordSet = Nothing

Dieses Script legst du auf einen Button in der Eingabemaske und nennst
ihn „Neue Artikel per Barcodescanner erfassen…“, das war’s… :slight_smile:

(Klar: Ein Fehlerhandling muss noch rein!)

  1. Wenn ich den Datensatz per Script speichere, fragt er trotzdem noch, ob
    der Datensatz gespeichert werden soll.

das ist ein Konzeptproblem: du legst im Script ja nochmal einen neuen
Record an, das ist nicht der Record, der durch den Anwender in der
Eingabemakse mit „Neu“ erzeugt wurde, für DEN wird immer die Frage
kommen, ob er gespeichert werden soll. Wenn du DEN speichern möchtest,
dann brauchst du InvokeMenu. Der ganze Ansatz ist aber m.E. nicht
richtig praktikabel und das ENTER-Problem wirst du auch nicht gelöst
bekommen. Daher: s.o.

Gruß

Alex


CRM-Leitsatz: „Das einzige, was wirklich stört, ist der Kunde!“ :wink:

Hallo Alex,

Wow! Vielen vielen Dank für deine Mühe!
So funktionierts. Ich muss nur noch Fehlerprüfung etc. einbauen!!!

Danke, Danke!!!

Schönes Wochenende

David

„Alexander Scholz“ <alexander.scholz@xmai…> schrieb im Newsbeitrag
news:721311112008102337@combit.net…

Hi David,

  1. Die Eingabetaste (die ja der Scanner nach dem Scan „betätigt“) kann
    nicht
    an eine Schalfläche gebunden werden.

Mein Ansatz war, dass du ein Script schreibst, welches in einer Schleife
per InputBox die eingescannte Artikelnummer einliest und dann den
Datensatz erzeugt (das ENTER des Barcode-Scanners wird die InputBox
autom. „schliessen“). Also im Pseudocode (hab keine Zeit das syntaktisch
genau zu checken) so:

set oCurrentRecordSet =
cRM.CurrentProject.ActiveViews.ActiveView.CurrentRecordSet
do
sArtikelNummer = InputBox(„Artikelnummer jetzt einscannen (Eine leere
Eingabe beendet die Erfassung)“, „Erfassung neuer Artikel“)
if not sArtikelNummer = „“ then
begin
set oNewRecord = oCurrentRecordSet.NewRecord
oNewRecord.SetContentsByName „ArtikelNr“, sArtikelNummer
oNewRecord.Save
oNewRecord.Unlock
set oNewRecord = Nothing
end if
loop until sArtikelNummer = „“
set oCurrentRecordSet = Nothing

Dieses Script legst du auf einen Button in der Eingabemaske und nennst
ihn „Neue Artikel per Barcodescanner erfassen…“, das war’s… :slight_smile:

(Klar: Ein Fehlerhandling muss noch rein!)

  1. Wenn ich den Datensatz per Script speichere, fragt er trotzdem noch,
    ob
    der Datensatz gespeichert werden soll.

das ist ein Konzeptproblem: du legst im Script ja nochmal einen neuen
Record an, das ist nicht der Record, der durch den Anwender in der
Eingabemakse mit „Neu“ erzeugt wurde, für DEN wird immer die Frage
kommen, ob er gespeichert werden soll. Wenn du DEN speichern möchtest,
dann brauchst du InvokeMenu. Der ganze Ansatz ist aber m.E. nicht
richtig praktikabel und das ENTER-Problem wirst du auch nicht gelöst
bekommen. Daher: s.o.

Gruß

Alex


CRM-Leitsatz: „Das einzige, was wirklich stört, ist der Kunde!“ :wink: