Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Doming am September 22, 2025, 06:46:40

Titel: im VBA-Code nach „ß” suchen
Beitrag von: Doming am September 22, 2025, 06:46:40
Hallo,

ich habe hier eine alte, mit Sonderzeichen verseuchte Datenbank auf den Tisch bekommen, um sie auch mit Rechnern ohne Sonderzeichen verwenden zu können. Also Sonderzeichen aus den Controls raus.

Mit ä. ö und ü geht das auch flott, aber wenn man nach dem ß sucht, ,,findet" die Suche auch alle ,,ss".

Wie kann man der Zeichensuche beibringen, dass sie nur das markiert, was auch eingegeben wurde?

Gruß
 Doming
Titel: Re: im VBA-Code nach „ß” suchen
Beitrag von: PhilS am September 22, 2025, 10:18:44
Das scheint leider nicht möglich zu sein. :-(

Auch kommerzielle Tools, wie MZ-Tools (https://www.mztools.com/) und Find and Replace (https://accessdevtools.com/product/find-and-replace/) haben damit ein Problem. Allerdings kann man bei diesen Tools immerhin mit der RegExp-Option nach [ß] suchen und das gewünschte Ergebnis erreichen. - Das scheitert bei der eingebauten Suche leider auch, wenn man die "Use Pattern matching"-Option aktiviert.



Titel: Re: im VBA-Code nach „ß” suchen
Beitrag von: Doming am September 22, 2025, 11:35:42
c'est la vie... dann muss man sich eben durch die ganzen Access-Erwähnungen und sonstigen DoppelEssen durchklicken

Hatte gehofft, dass ich da nur eine Wissenslücke habe

Gruß
 Doming
Titel: Re: im VBA-Code nach „ß” suchen
Beitrag von: Knobbi38 am September 22, 2025, 11:49:49
Hallo Doming,

dafür verwende ich schlichtweg einen ext. Programmier-Editor und kopiere den Code einfach per CP. In dem Fall lohnen sich die wenigen Tastendrücke mehr auf jeden Fall.

Knobbi38
Titel: Re: im VBA-Code nach „ß” suchen
Beitrag von: Doming am September 22, 2025, 12:08:29
*urgs* wenige Tastendrücke...   :-\

die DB hat gefühlt mehr Formulare und Module als Eszette, da kopiere ich mir ja nen Wolf.
Aber danke für den Vorschlag, auf die Idee bin ich nicht gekommen.
Titel: Re: im VBA-Code nach „ß” suchen
Beitrag von: Knobbi38 am September 22, 2025, 13:26:24
Hallo Doming,

wenn es etwas mehr wird, könnte man es automatisieren ...


Air-Code:
  Dim app As Access.Application
 
  Set app = New Access.Application
  app.AutomationSecurity = msoAutomationSecurityForceDisable
  app.UserControl = False
 
  app.OpenCurrentDatabase "X:\MyDatabse.accdb", True
  app.SaveAsText acForm, "MyFormName", "x:\MyFormName.txt"
 
  ' Todo: make the changes in the text file
 
  app.LoadFromText acForm, "MyFormName", "x:\MyFormName.txt"
  app.RunCommand acCmdCompileAndSaveAllModules
  app.CloseCurrentDatabase
  app.Quit
  Set app = Nothing

Die Namen der Objekte und die Objekttypen können mit Hilfe der Containers-Auflistung ermittelt werden.

Knobbi38
Titel: Re: im VBA-Code nach „ß” suchen
Beitrag von: PhilS am September 22, 2025, 13:37:16
Zitat von: Knobbi38 am September 22, 2025, 13:26:24Die Namen der Objekte und die Objekttypen können mit Hilfe der Containers-Auflistung ermittelt werden.
Einfacher ist: CurrentProject.AllForms 
Und analog .AllReports, .AllModules

 
Titel: Re: im VBA-Code nach „ß” suchen
Beitrag von: Knobbi38 am September 22, 2025, 14:06:48
Hallo Phil,

wäre ja schön, aber auf die Eigenschaft CurrentProjekt besteht in dem Moment kein Zugriff (Error 7952)!

Knobbi38
Titel: Re: im VBA-Code nach „ß” suchen
Beitrag von: PhilS am September 22, 2025, 20:11:56
Zitat von: Knobbi38 am September 22, 2025, 14:06:48wäre ja schön, aber auf die Eigenschaft CurrentProjekt besteht in dem Moment kein Zugriff (Error 7952)!
?
Eigenartig. Ich benutze CurrentProject sehr häufig und an diesen Fehler kann ich mich nicht erinnern.
Dein Code modifiziert wie folgt, läuft ohne Probleme:

[...]
  app.OpenCurrentDatabase Environ("Temp") & "\Database3.accdb", True
 
  Dim cp As CurrentProject
  Set cp = app.CurrentProject
  app.SaveAsText acForm, cp.AllForms(0).Name, Environ("Temp") & "\" & cp.AllForms(0).Name & ".txt"
 
  ' Todo: make the changes in the text file
 [...]
Titel: Re: im VBA-Code nach „ß” suchen
Beitrag von: Knobbi38 am September 22, 2025, 23:01:08
Hallo Phil,

ich habe es nicht verifiziert, aber ich könnte mir Vorstellen, daß Makros in deinem Beispiel generell erlaubt sind und damit der Zugriff auf CurrentProject möglich wird.

In meinem Beispiel jedoch werden explizit durch
app.AutomationSecurity = msoAutomationSecurityForceDisablealle Makros in der automatisierten Instanz deaktiviert, um so die Ausführung von Code während des Öffnens zu verhindern. Es werden somit keine Initialisierungen und Datenbankzugriffe mehr automatisch durchgeführt, schließlich soll ja nur der Code bearbeitet werden.

Die Zeile
app.UserControl = Falseist eher kosmetischer Natur und kennzeichnet damit, daß der Zugriff per Automation erfolgt und die Anwendung selber ausgeblendet ist.
 
Deshalb habe ich in diesem Beispiel ausnahmsweise vorgeschlagen, die Informationen per Container-Auflistung auszulesen, da diese Möglichkeit seltener angewendet wird und wenig bekannt ist.
 

VG Knobbi38
Titel: Re: im VBA-Code nach „ß” suchen
Beitrag von: PhilS am September 23, 2025, 10:35:47
Zitat von: Knobbi38 am September 22, 2025, 23:01:08[...]ich könnte mir Vorstellen, daß Makros in deinem Beispiel generell erlaubt sind und damit der Zugriff auf CurrentProject möglich wird.

In meinem Beispiel jedoch werden explizit durch
Mein Beispiel ist dein Beispiel. ;-)
Ich habe dein Beispiel unverändert (bis auf die Pfade) übernommen, und nur die obigen Zeilen zusätzlich eingefügt.


Zitat von: Knobbi38 am September 22, 2025, 23:01:08app.AutomationSecurity = msoAutomationSecurityForceDisablealle Makros in der automatisierten Instanz deaktiviert, um so die Ausführung von Code während des Öffnens zu verhindern. Es werden sommit keine Initialisierungen und Datenbankzugriffe mehr automatisch durchgeführt, schließlich soll ja nur der Code bearbeitet werden.
Von der automatisierten Instanz wird kein Code ausgeführt. Der laufende Code ist nur in der primären Instanz, die die sekundäre, automatisierte Instanz steuert. Daher glaube ich nicht, dass die AutomationSecurity der Sekundärinstanz hierfür relevant ist.
Die Einstellung dürfte nur verhindern, dass Code durch AutoExec oder ein Startup-Form ausgeführt wird. app.Run und app.Eval dürften durch diese Einstellung ebenfalls nicht funktionieren.


Zitat von: Knobbi38 am September 22, 2025, 23:01:08Deshalb habe ich in diesem Beispiel ausnahmsweise vorgeschlagen, die Informationen per Container-Auflistung auszulesen, da diese Möglichkeit seltener angewendet wird und wenig bekannt ist.
Das finde ich als alternativen Ansatz auch durchaus sinnvoll.