SendKeys funktioniert nur auf deutschem PC

Hallo ihr Wissenden,
heute habe ich 2 Probleme, das ich nicht erklären und lösen kann.
Nr. 1:
Ich benutze ein VBA um in einem Formular in bestimmten Textfeldern ein Kreuz einzugeben.
Dazu benutze ich den Send Key Befehl.

DoCmd.GoToControl „mono“
SendKeys „{X}“, True

DoCmd.GoToControl „stereo“
SendKeys „{X}“, True

DoCmd.GoToControl „dolby_digital“
SendKeys „{X}“, True

DoCmd.GoToControl „raumklang“
SendKeys „{X}“, True

Bei meinem PC funktioniert das super.
Auf meinem Laptop muß ich aus beruflichen Gründen die italienische Sprache benutzen.
Beim Laptop springt das Makro immer ins letzte Textfeld und fügt alle Kreuze darin ein
In diesem Beispiel: Das VBA fügt im Feld Raumklang XXXX ein. Alle anderen Felder bleiben leer.
Auch eine Umstellung der Tastatursprache auf deutsch hat nichts gebracht.

Nr.: 2:
Ich habe in dem Accsess Formular ein Bezeichnungsfeld das bei den Eigenschaften ->Format ->Hyperlink-Adresse auf ein Textfeld verweist (=Foto1). Dieses Textfeld holt bzw. schreibt seine Daten in eine Haupttabelle deren Feldtyp „Text“ ist. Mit diesem Bezeichnungsfeld kann ich somit die Fotos öffnen, die in der Tabelle zugeordnet sind.
Wenn ich nun von meinem PC den Link mit dem Foto anklicke, dann öffnet sich das Standardprogramm für Bilder-Anzeige (MS-Office 2010)
Beim Laptop wird der Link mit dem Internet Explorer geöffnet. Wenn ich die Fotos normal über den Explorer öffne,dann öffnen sie sich mit dem Standardprogramm für Bilder-Anzeige (MS-Office 2010)

Nun zur Ausstattung
PC: Win 7 Professional SP1 64Bit - deutsch / MS Office Professional Plus 2010
Laptop: Vista Home Prämium SP2 - italienisch / MS Office Professional Plus 2010

Habe echt keine Ahnung, was hier los ist.
Bin für jede Hilfe dankbar.

Roland

Hallo,

heute habe ich 2 Probleme, das ich nicht erklären und lösen
kann.
Nr. 1:
Ich benutze ein VBA um in einem Formular in bestimmten
Textfeldern ein Kreuz einzugeben.
Dazu benutze ich den Send Key Befehl.

Warum? Sendkeys ist einer der unglücklichsten Befehle, die in diesem Zusammenhang von MS „erschaffen“ wurden.

DoCmd.GoToControl „mono“
SendKeys „{X}“, True

DoCmd.GoToControl „stereo“
SendKeys „{X}“, True

DoCmd.GoToControl „dolby_digital“
SendKeys „{X}“, True

DoCmd.GoToControl „raumklang“
SendKeys „{X}“, True

Wenn Du eh schon VBA-Code verwendest, dann mach das einfach so:

.
.
.
Me!Mono=„X“
Me!stereo =„X“
Me!dolby_digital = „X“
Me!raumklang=„X“
.
.
.

fertig.

Bei meinem PC funktioniert das super.
Auf meinem Laptop muß ich aus beruflichen Gründen die
italienische Sprache benutzen.
Beim Laptop springt das Makro immer ins letzte Textfeld und
fügt alle Kreuze darin ein
In diesem Beispiel: Das VBA fügt im Feld Raumklang XXXX ein.
Alle anderen Felder bleiben leer.
Auch eine Umstellung der Tastatursprache auf deutsch hat
nichts gebracht.

Nr.: 2:
Ich habe in dem Accsess Formular ein Bezeichnungsfeld das bei
den Eigenschaften ->Format ->Hyperlink-Adresse auf ein
Textfeld verweist (=Foto1). Dieses Textfeld holt bzw. schreibt
seine Daten in eine Haupttabelle deren Feldtyp „Text“ ist. Mit
diesem Bezeichnungsfeld kann ich somit die Fotos öffnen, die
in der Tabelle zugeordnet sind.
Wenn ich nun von meinem PC den Link mit dem Foto anklicke,
dann öffnet sich das Standardprogramm für Bilder-Anzeige
(MS-Office 2010)
Beim Laptop wird der Link mit dem Internet Explorer geöffnet.
Wenn ich die Fotos normal über den Explorer öffne,dann öffnen
sie sich mit dem Standardprogramm für Bilder-Anzeige
(MS-Office 2010)

Auch dieser Vorgang ist wie durch die Brust ins Auge geschossen.

Um eine Datei mit der zu ihrer Dateiendung verknüpften Anwendung zu öffnen, ist die Verwendung von Shellexecute empfohlen. Dieses Gehopse mit dem „Hyperlink-Format“ bringt mehr Ärger als brauchbaren Effekt.

Vielleicht findest Du ein Beispiel in den FAQ oder hier:

http://www.dbwiki.net/wiki/VBA_Tipp:_Anwendung_mit_S…

als „Hyperlink-Alternative“ könntest Du auch dieses versuchen:

  1. Alle Hyperlink-Formate entfernen.
  2. Bezeichnungsfeld vom zugehörenden Textfeld lösen , bzw. neues eigenständiges Bezeichnungsfeld erzeugen mit dieser Ereignisprozedur:

Sub bezFoto1_Click()
If not Isnull(Me!Foto1) Then FollowHyperlink Me!Foto1
End Sub

Nun zur Ausstattung
PC: Win 7 Professional SP1 64Bit - deutsch / MS Office
Professional Plus 2010
Laptop: Vista Home Prämium SP2 - italienisch / MS Office
Professional Plus 2010

Habe echt keine Ahnung, was hier los ist.

Möglicherweise ist da ein anderes Timing des Betriebssystems (bzw. die Schnelligkeit des Laptops) Schuld an der Misere. Der Sendkeys-Befehl wird asynchron abgearbeitet , d. h. die Zeichen „kommen später“ wegen ihrem Weg über den Tastatur-Treiber in die Textfelder als der Code es vorsieht. Bevor das erste Sendkeys sich auswirkt, ist schon die letzte GotoControl-Anweisung abgearbeitet. Es wird wohl so sein, dass der zweite Sendkeys-Parameter in dieser Laptop-Umgebung buggy ist.

Gruß
Franz, DF6GL

Hallo Franz,
danke für die schnelle Hillfe.
Bin bei Access ein rechter Neuling.
Ich werde das alles mal ausprobieren, und wenn ich Erfolg habe, dann melde ich mich noch mal. (kann aber ein Weilchen dauern)

Gruß
Roland

Moin Moin,

Nr. 1:

dazu hat dir ja schon Franz die einzig sinnvolle Lösung genannt :smile:

Nr.: 2:
Ich habe in dem Accsess Formular ein Bezeichnungsfeld …

hat es bestimmte Gründe, warum du das sooooo machst?

Ab Access 2007 gibt es die „Anlagen“, ein Feldtyp der dazu dient z.B. Bilder aufzunehmen und zu verwalten und wesentlich weniger die Ressourcen der Datenbank belastet als frühere OLE Lösungen.

Schau dir doch einfach mal die Beispieldatenbank „Kontakte“ an.

Grüße aus Rostock
Wolfgang
(Netwolf)

Ugh.

Ich benutze ein VBA um in einem Formular in bestimmten
Textfeldern ein Kreuz einzugeben.

Das ist schon ab ovo ein ziemlicher, Entschuldigung, Murks. Zum Ankreuzen gibt es Ja/Nein-Felder in Access. Und die kannst du dann mit True oder False belegen …

Begründung: Wenn du ein Textfeld benützest, ist es auch möglich, in dieses „Na klar ist das Stereo, was denn sonst“ einzugeben, es sei denn, du schließest alles außer X oder Blank mit diversen Routinen aus (und gibst die Textfeld-Länge mit 1 vor). Und wenn dann irgendwann in Datensatz Nr. 4711 ein N in dem Feld steht, repräsentiert das dann ein „Nein“ oder „Na klar“ oder „Nudelsuppe ist fertig“?

Stichwort: Datenmodellierung

Aga,
CBB

Moin, moin,

erst mal danke für die Hilfe !!!

hat es bestimmte Gründe, warum du das sooooo machst?

ja hat es :smile:

Ab Access 2007 gibt es die „Anlagen“, ein Feldtyp der dazu
dient z.B. Bilder aufzunehmen und zu verwalten und wesentlich
weniger die Ressourcen der Datenbank belastet als frühere OLE

Das habe ich am Anfang auch ausprobiert, aber bei ca 2500 „eingebundenen“ Fotos bläht sich die Datenbank doch riesig auf

ich werde mal sehen, ob die anderen Tips mich weiterbringen

Bis dann
Roland

Ich danke euch allen für die Hilfe und einen schönen Tag