Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Neueste Beiträge

#11
Formular / Probleme mit der Set Fokus von...
Letzter Beitrag von faby - April 21, 2025, 17:08:54
Hallo,

ich benutze MS Access 2010 Professional. Ich möchte Kroatische Vokabel lernen und mein DB ist soweit in Ordnung außer das wenn ich lerne manchmal kommen Kroatisch Sonderzeichen für ein Wort dann habe ich ein Hauptformular wo die Vokabel eingegeben und geprüft werden und ein Dialog Formular mit die Sonderzeichen, es funktioniert alles aber wenn ein Sonderzeichen eingefügt wird in txtAntwort dann bleibt der Fokus auf den frmSonderzeichen anstatt auf den txtAntwort von frmVokabelTrainer. Hier mein Code vielleicht jemand hat eine Lösung für mich?

Option Compare Database
Option Explicit
Private Sub Form_Load()
    ' Hilfsfunktion hinzufügen
    If IsFormLoaded("frmVokabelTrainer") Then
        Me.Move Left:=9000, Top:=1000, Width:=7000, Height:=5000
    End If
End Sub

' Hilfsfunktion außerhalb des Form_Load einfügen
Function IsFormLoaded(FormName As String) As Boolean
    Dim frm As Form
   
    On Error Resume Next
    Set frm = Forms(FormName)
    IsFormLoaded = (Err.Number = 0)
    On Error GoTo 0
End Function

' Fügt das Zeichen an der aktuellen Cursorposition im Textfeld txtAntwort auf frmVokabelTrainer ein
Private Sub ZeichenEingeben(ByVal s As String)
    Dim txt As Control
    Set txt = Forms!frmVokabelTrainer!txtAntwort
   
    Dim curText As String
    curText = txt.Text
   
    Dim pos As Long
    pos = txt.SelStart
   
    Dim newText As String
    newText = Left(curText, pos) & s & Mid(curText, pos + 1)
   
    txt.Text = newText
    txt.SelStart = pos + Len(s)
    txt.SelLength = 0

    txt.setFocus
End Sub

Private Sub btnD_Click()
Dim txt As Control '?

 Call ZeichenEingeben(ChrW(272)) ' Ð

End Sub

Private Sub btn_d_Click()

Call ZeichenEingeben(ChrW(273)) ' d

End Sub

Private Sub btnCC_Click()

Call ZeichenEingeben(ChrW(268)) ' C

End Sub

Private Sub btn_cc_Click()

Call ZeichenEingeben(ChrW(269)) ' c

End Sub

Private Sub btnS_Click()

Call ZeichenEingeben(ChrW(352)) ' Š

End Sub

Private Sub btn_s_Click()

Call ZeichenEingeben(ChrW(353)) ' š

End Sub

Private Sub btnC_Click()

Call ZeichenEingeben(ChrW(262)) ' C

End Sub

Private Sub btn_c_Click()

Call ZeichenEingeben(ChrW(263)) ' c

End Sub

Private Sub btnZ_Click()

Call ZeichenEingeben(ChrW(381)) ' Ž

End Sub

Private Sub btn_z_Click()

Call ZeichenEingeben(ChrW(382)) ' ž

End Sub

#12
Access Programmierung / Re: Fehler 2474 abfangen beim ...
Letzter Beitrag von knobbi38 - April 21, 2025, 15:38:45
Hallo,

die Lösung von Christian ist sicherlich in diesem Fall die einfachste und beste Variante. 👍

Alternativ  kannst du hier einfach deine Funktion als "Shared Eventhandler" direkt per Ausdruck bei den Textboxen eintragen und aufrufen:
Sie dürfen in diesem Board keine Dateianhänge sehen.

Public Function BackcolorOn() As Variant
  On Error Resume Next
  Screen.ActiveControl.BackColor = QBColor(14) 'Hellgelb
End Function

Übrigens solltest du bei Verwendung des Screen-Objekts immer mit einem Fehler rechnen. Eine minimale Fehlerbehandlung ist dabei also obligatorisch.

Gruß Knobbi38
#13
Formular / Re: Memotextfeld Scrollen mit ...
Letzter Beitrag von knobbi38 - April 21, 2025, 15:20:54
Genau, und so funktioniert das dann bei mir auch.
Voraussetzung ist natürlich, dass das Memofeld mehr Textzeilen enthält, als in der Textbox dargestellt werden können.

Die Mausfunktionen hast du ja nicht anders konfiguriert, oder?

Gruß Knobbi38
#14
Access Programmierung / Re: Fehler 2474 abfangen beim ...
Letzter Beitrag von Bitsqueezer - April 21, 2025, 15:00:22
Hallo,

im übrigen gibt es für den Zweck auch eine Bedingte Formatierung, dort kannst Du als Regel einstellen, daß das Control aktiv sein muß und welche Formatierung dann einzustellen ist.
Das funktioniert dann ganz ohne Programmierung und ist nicht auf unzuverlässige Referenzen wie "Screen.ActiveControl" angewiesen.

Außerdem:

Private Sub ST_Titel_GotFocus()

BackcolorOn

End Sub

Wenn Du eine Eventfunktion für "GotFocus" hast, dann weißt Du explizit, daß das aktive Control hier "ST_Titel" ist. Also kannst Du, wenn "BackColorOn" wiederverwendbar sein soll, die Referenz einfach übergeben mit "BackColorOn Me.ST_Titel".

Deine Funktion wird dann modifiziert:
Public Function BackcolorOn(ctlTextbox As Access.TextBox)
    ctlTextBox.BackColor = QBColor(14) 'Hellgelb
End Function

Ein "SetFocus" ist hier sinnfrei, da Du ja bereits mit "GotFocus" einen Event ausgelöst hast, der besagt, daß der Fokus sich genau hier befindet.

Mit dieser Modifikation erhält die Funktion genau die richtige Referenz, während "Screen.ActiveControl" u.U. auf ein anderes Control verweist, was gerade nicht verfügbar ist.

Gruß

Christian
#15
Formular / Re: Memotextfeld Scrollen mit ...
Letzter Beitrag von Chiefhenk - April 21, 2025, 14:54:46
Hallo Knobbi

Da brauchst du keine Glaskugel
Für dich ist deine Antwort bestimmt logisch.
Was soll ich genau wo machen?
In den Einstellungen beim Feld ist bildlaufleiste Vertikal ausgewählt.
Wenn ich in das Feld klicke erwarte ich eigentlich, das ich mit dem Mausrad scrollen kann.
#16
Access Programmierung / Re: Fehler 2474 abfangen beim ...
Letzter Beitrag von Chiefhenk - April 21, 2025, 14:47:31
Hallo Knobi
Danke für deine Antwort.

Das habe ich mir fast gedacht

Da Ich Anfänger bin weis ich nicht wie das mit der Klasse oder dem Shared Eventhandler geht.
#17
Formular / Re: Memotextfeld Scrollen mit ...
Letzter Beitrag von knobbi38 - April 21, 2025, 13:11:46
Hallo,

ich habe keine Glaskugel, aber eine Textbox hat eine Eigenschaft .Scrollbars, welche du mit 2 initialisieren solltest. Das hat nichts mit deiner Maus zu tun.

Gruß Knobbi38
#18
Access Programmierung / Re: Fehler 2474 abfangen beim ...
Letzter Beitrag von knobbi38 - April 21, 2025, 13:06:33
Hallo,

während des Öffnens eines Formulars erhält das erste Steuerelement den Fokus und damit wird dann auch deine Ereignisroutine angesprungen. Zu dem Zeitpunkt gibt es aber noch kein aktiviertes Steuerelement und deshalb geht der erste Aufruf von Screen.Activecontrol schief. 

Hier mußt du die eine andere Logik einfallen lassen, die deine Ereignisbehandlung erst freischaltet, wenn ein Formular auch sichtbar ist oder du baust eine entsprechende Fehlerbehandlungsroutine ein.

Im übrigen würde ich das eher mit einer Klasse oder einem "Shared Eventhandler" lösen, anstatt jedes mal eine Funktion auszurufen.

Gruß Knobbi38
 
#19
Tabelle/Abfrage / Re: Falscher Wert in Kombinati...
Letzter Beitrag von DerSolide - April 21, 2025, 12:23:09
Hallo Klaus,

na dann hole Dir Mal ein Getränk und Popcorn  :) :

In der Datenbank sollen Behälter erfasst werden, wobei jeder Behälter verschiedene Kenndaten wie Hersteller, Behältertyp (=Kombinatsfeld "Quelle"), Behältermerkmal (=Kombinationsfeld "Abhängigkeit"), Nettogewicht (=Kombinationsfeld "Verweis"), Bruttogewicht, Seriennummer, Herstellungsdatum, Inhalt, etc.) besitzt.
In dem Bestand sollen dann diverse Filtermöglichkeiten implementiert werden.

Die drei o.a. Kombinationsfelder sind somit nur ein Teil des Formulars, welche zur Dateneingabe benötigt und deren Werte in der Behälterdatenbank "tblQuelleAbhängigkeitVerweis" gespeichert werden, welche dem Eingabeformular als Datenquelle dient.
Die Auswahl des Behältermerkmals im Kombinationsfeld "Abhängigkeit" ist allerdings bedingt abhängig von der Auswahl des Behältertyps im Kombinationsfeld "Quelle", da mehrere verschiedene Behältertypen identische Behältermerkmale aufweisen können. Das stellt ja eine m:n-Beziehung dar, welche ich durch die Hilfstabelle "tblQuelleAnhängigkeit" gesplittet habe und über eine SQL-Abfrage (INNER JOIN) das Kombinationsfeld "Abhängigkeit" befülle.

Das funktioniert auch alles wunderbar, daher wollte ich jetzt noch das Nettogewicht ebenfalls bedingt abhängig, allerdings von der Auswahl des Behältertyps im Kombinationsfeld "Quelle" UND der Auswahl des Behältermerkmals im Kombinationsfeld "Abhängigkeit" über eine ganz normale SQL-Abfrage (geschachteltes SELECT) in das Kombinationsfeld "Verweis" schreiben. Dazu bot sich die Tabelle "tblQuelleAbhängigkeit" an, da dort ja bereits alle möglichen Kombination über die beiden Fremdschlüssel vorhanden sind und ich die Tabelle nur mehr mit einer Spalte für die ID das Nettogewicht ergänzen musste.

Auch das funktioniert wunderbar, zumindest bei der Eingabe und dem Speichern der Werte in der Tabelle "tblQuelleAbhängigkeitVerweis".
Sollen die Daten aber wieder aus der Tabelle gelesen werden, tritt in der Kombinationsbox der schon genannte Effekt - aber eben nur in diesem Kombinationsfeld auf.

Ich hoffe, ich konnt in groben Zügen den Zweck erläutern.


Schöne Grüße,
Christian
#20
Formular / Re: Unterformular
Letzter Beitrag von Malina - April 21, 2025, 09:21:29
Hallo zusammen
So, zu Hause hat das irgendwie nicht funktioniert. Da kam bei mir immer die Meldung, dass ich für dieses Forum nicht zugelassen bin. Deshalb kommt die Antwort erst heute. Nun wollte ich die Testdatenbank hochladen in .zip-Datei, Grösse 0.7 MB. Funktioniert nicht... Er bleibt mir immer hängen!
Schlussendlich habe ich eine Lösung gefunden. Ich habe eine Meldung für eine Doppelerfassung gemacht. So löscht es mir zwar die bereits gebuchten Kurse nicht ab der Dropdownliste aber ich kann eine Doppelerfassung trotzdem verhindern.
Gruss und Dank
Nicole