Neuigkeiten:

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

Mobiles Hauptmenü

Prüfung ob Steuerelemet existiert

Begonnen von AMB, Januar 02, 2013, 13:54:50

⏪ vorheriges - nächstes ⏩

bahasu

Hi

die obige dlookup-Anweisung entspricht der weiter oben aufgeführten.
Soll bei dem Text wirklich das gleiche stehen wie bei der Bildzuordnung?

Zitat von: QMB am Januar 16, 2013, 08:06:24
Klappt aber auch nicht.

Definiere bitte, was nicht klappt.
Ansonsten noch mal das Angebot, eine von Dir hochgeladenen Datenbank zu betrachten.

Harald
Servus

AMB

Hallo,

erstmal herzlichen Dank für die Hilfe und die Geduld mit mir.

Ich versuche es mal ein wenig zu erklären was ich überhaupt vorhabe:

Also, es existierte eine Datenbank mit Frontend und Backend (Access). Das Backend wurde nun aus Performance- und Zugriffstechnischen Gründen in eine MySQL-Datenbank verlegt.
Die Anwendung ist mit Formularen als Benutzeroberfläche aufgebaut. Zwecks "corporate identity" sind entsprechend Logos und farbige Schaltflächen eingebaut. Diese liegen in einem Ordner vor (z. B.: Logo.jpg, Formular.png, Schaltfläche.png) und sind nur verknüpft.
Auf den einzelnen Formularen sind unterschiedlich viele Buttons zum Öffnen weiterer Formulare, Berichte und Excel-Dateien. Die "Buttons" bestehen aus einem Bildsteuerungselement (wegen der farblichen Schaltfläche!) und einem Textfeld zur Beschriftung. Der Inhalt wird aus einer Tabelle geholt.
Bisher so:
[txtA1].Value = DLookup("QMDatei1", "tblqma0000001", "QMID=1")
[txtA2].Value = DLookup("QMDatei1", "tblqma0000001", "QMID=2")
...
[txtA30].Value = DLookup("QMDatei1", "tblqma0000001", "QMID=30")

Hinter jedem Formular lag einen ellenlanger VBA-Code. Und beim Anlegen eines neuen Formulars musste der gesamte Code umgeschrieben werden. Teilweise musste auch Code gestrichen werden, da z. B. auf dem neuen Formular nur 25 "Buttons" waren.


Da ich eine faule Socke bin, habe ich gerne alles ein wenig flexibler.
Zuerst habe ich erstmal den Code ausgelagert.
Mit Eurer Hilfe habe ich mir dann flexibel die "farbigen Schaltflächen" anzeigen lassen:
ZitatHi qmb,

im Modul:
Code: (vb) In Zwischenablage kopieren

Public Sub Pruefen(Formular As String)
    Dim varSchaltflaeche As Variant, i As Long
    Const MaxBildAnzahl = 10
     
    On Error Resume Next

    For i = 1 To MaxBildAnzahl
        varSchaltflaeche = Nz(DLookup("PfadSchaltflaeche", "tblDaten001", "Daten001ID=" & i), "")
'        varSchaltflaeche = "E:\Data\Bilder\Bild.bmp"       ' diente zum Testen
       
        If varSchaltflaeche > "" Then
            If Dir(varSchaltflaeche) <> "" Then
                Forms(Formular).Form("obj" & i).Picture = CStr(varSchaltflaeche)   'Benennung der Steuerelemente:  obj1 ...  obj10 ....
            Else
                Forms(Formular).Form("obj" & i).Picture = ""
            End If
        End If
    Next
End Sub


im Formular im Ereignis "Beim Laden":
Code: (vb) In Zwischenablage kopieren

    Call Pruefen(Me.Name)


Harald

PS
"QMB" bedeutet Qualitätsmanagement Beauftragter?

Das funktioniert auch einwandfrei.

Nun wollte ich das neuerworbene Wissen transferieren und wollte nach dem gleichen Prinzip die Textfelder füllen. Dafür habe ich aus ".Picture"".Value" gemacht und die Tabelle für die Datenherkunft angepasst.
Hier nochmal mein Versuch:
Dim strDatenA As String, k As Long
    strDatenA = Nz(DLookup("QMDatei1", "tblqma0000001", "QMID=" & k), "")
    Const MaxDatenAnzahlA = 30
    For k = 1 To MaxDatenAnzahlA
     
         If Not IsNull(strDatenA) Then
           If Dir(strDatenA) <> "" Then
             Forms(Formular).Form("txtA" & k).Value = CStr(strDatenA)
           Else
             Forms(Formular).Form("txtA" & k).Value = ""
           End If
         End If
    Next

Aber das funktioniert nicht. Warum nicht? Mein Code-Verständnis war wohl doch nicht richtig.

Ich hoffe das war deutlich und verständlich geschildert!? Ansonsten muss ich wohl doch ein Beispiel zusammenbasteln.



DF6GL

Hallo,


schreib mal:

Dim k As Long
  Const MaxDatenAnzahlA = 30

On Error resume next   

For k = 1 To MaxDatenAnzahlA
     Forms(Formular)("txtA" & k).Value = DLookup("QMDatei1", "tblqma0000001", "QMID=" & k)
     Next

AMB