Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
In Endlosliste/-formular VBA für jede DS-Zeile neu ausführen
zurück: Problem beim Zugriff auf Textfeld in Unterformular weiter: Chekbox Reihe vor Speichern prüfen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
DaGloom
Im Profil kannst Du frei den Rang ändern


Verfasst am:
15. Aug 2010, 12:01
Rufname:

In Endlosliste/-formular VBA für jede DS-Zeile neu ausführen - In Endlosliste/-formular VBA für jede DS-Zeile neu ausführen

Nach oben
       Version: Office 2003

Hallo,

ihr habt mir bisher schon super weiter geholfen (SuFu sei dank), aber nun habe ich ein Problem, das es sicher schon zig fach gibt, ich aber nicht in einem guten Suchbegriff formulieren kann.

Foldende Situation:

Access 2003 DB mit Endlosformular/Endlosliste zur Darstellung der DS einer Access-Abfrage (unter Abfragen definiert).
Im Endlosformular habe ich noch am Ende des Formularrandes ein kleines Quadrat gezeichnet mit weisser Füllung.

Ich versuche beim Laden des Formulars für jeder Zeile (also für jeden einzelnen dargestellten DS) per VBA ein SQL-Statement abzusetzen. Wenn dies zutrifft, soll das Quadrat am Zeilenende z.B. blau eingefärbt werden, wenn nicht, dann wieder weiss.

Dies klappt soweit auch alles super, aber nur für den allerersten DS, der angezeigt wird: trifft also die SQL-Abfrage beim ersten DS zu, so werden alle weiteren Quadrate der anderen DS genauso gefärbt, wie beim ersten.

Es scheint, als ob meine VBA-Abfrage nur einmal ausgeführt zu werden und dann nicht mehr. Es liegt vermutlich daran, dass die SQL-Farbänderungs-Funktion im "Sub Form_Load()" nur einmalig beim Formularstart ausgeführt wird. Setzte ich jedoch die SQL-Färbe-Funktion als eigene Sub und starte sie manuell mit z.B. Klick auf das zu färbende Quadrat, so werden ebenfalls alle gleichzeitig eingefärbt. ”

Ich habe leider keine Idee, wie ich die Abfrage für jeden Eintrag einzeln aufrufen kann bzw. jedes Quadrat individuell ansteuern kann, ohne dass sich die Felder des anderen DS ebenfalls ändern.

Hier mal der Code, für die eigene Sub (Indikator ist die Bezeichnung für das Quadrat):
Code:

Private Sub Indikator_faerben()

    Dim rst_indikator_1 As New ADODB.Recordset
    rst_indikator_1.Open CurrentProject.Connection.Execute( _
        "SELECT Nz(Spalte1) + Nz(Spalte2) as Erg FROM Tabelle1 _
        WHERE Kriterium1 Like '" & Date & "' AND ID Like '" & Me![ID] & "'")
   
        If rst_indikator_1.EOF Then
            Me.Indikator_1.BackColor = RGB(255, 255, 0)
        Else
            If rst_indikator_1.Fields("Erg") = 0 Then
                Me.Indikator_1.BackColor = RGB(255, 255, 0)
            Else
                Me.Indikator_1.BackColor = RGB(0, 0, 255)
            End If
        End If
               
    rst_indikator_1.Close
    Set rst_indikator_1 = Nothing
End Sub

Dank euch schonmal für eure Hilfe Wink
Gast



Verfasst am:
15. Aug 2010, 12:06
Rufname:


AW: In Endlosliste/-formular VBA für jede DS-Zeile neu ausfü - AW: In Endlosliste/-formular VBA für jede DS-Zeile neu ausfü

Nach oben
       Version: Office 2003

Hallo,
nein das geht so nicht.
Dein "Farbelement" existiert in Wirklichkeit nur einmal, deshalb sieht es auch immer gleich aus.

Praktisch kannst du solche Sachen über "Bedingte Formatierung" umsetzen.

Gruß Mike
DaGloom
Im Profil kannst Du frei den Rang ändern


Verfasst am:
15. Aug 2010, 12:14
Rufname:

AW: In Endlosliste/-formular VBA für jede DS-Zeile neu ausfü - AW: In Endlosliste/-formular VBA für jede DS-Zeile neu ausfü

Nach oben
       Version: Office 2003

Hey, danke für die schnelle Antwort!

Kann ich über die bedingte Formatierung dann meine Sub aufrufen, die mir einen Wert zurückgibt, den ich dann vergleiche und entsprechend das Feld einfärbe? Es müsste ja für jede Zeile die entsprechende ID übergeben werden.
Gast



Verfasst am:
15. Aug 2010, 12:33
Rufname:

AW: In Endlosliste/-formular VBA für jede DS-Zeile neu ausfü - AW: In Endlosliste/-formular VBA für jede DS-Zeile neu ausfü

Nach oben
       Version: Office 2003

Hallo,
beschäftige dich erst mal prinzipiell mit der bedingte Formatierung. Diese kommt nämlich (zunächst) ganz ohne VBA aus.
Dein Ansatz mit dem Recordset scheint mir auch nicht der richtige Weg zu sein.
Der Farbindikator gehört mit in die Formularabfrage.
Willst du dann nur einen Datensatz in Abhängigkeit dieses Wertes färben oder nicht, wirst du nix programmieren müssen.

Ich persönlich kann die nicht konkret weiterhelfen, da ich die bedingte Formatierung nicht verwende (mein Access kann das noch nicht Wink)

Gruß Mike
DaGloom
Im Profil kannst Du frei den Rang ändern


Verfasst am:
16. Aug 2010, 00:24
Rufname:

AW: In Endlosliste/-formular VBA für jede DS-Zeile neu ausfü - AW: In Endlosliste/-formular VBA für jede DS-Zeile neu ausfü

Nach oben
       Version: Office 2003

Also ich war fleissig am Basteln und mit einer guten Tasse Kaffee und eurer Hilfe ist mir die Lösung dann wie folgt gekommen:
- Zuerst habe ich eine eigene Function aus meiner Sub gemacht:

Code:
Private Function Indikator_faerben(ID) AS String

    Dim rst_indikator_1 As New ADODB.Recordset
    rst_indikator_1.Open CurrentProject.Connection.Execute( _
        "SELECT Nz(Spalte1) + Nz(Spalte2) as Erg FROM Tabelle1 _
        WHERE Kriterium1 Like '" & Date & "' AND ID Like '" & ID & "'")
   
        If rst_indikator_1.EOF Then
            Indikator_faerben = "nein"
        Else
            If rst_indikator_1.Fields("Erg") = 0 Then
                Indikator_faerben = "nein"
            Else
                Indikator_faerben = "ja"
            End If
        End If
               
    rst_indikator_1.Close
    Set rst_indikator_1 = Nothing
End Sub


- Dann habe ich einfach quadratische Textfelder erstellt und deren Datenherkunft mit "=Indikator_faerben(ID)" gefüllt.
- Hiermit wird jedes Mal, wenn das Indikatorfeld erstellt wird, meine Funktion gestartet und die entsprechenden Werte zurückgegeben.
- Für die Färbung kam dann noch die Bedingte Formatierung zum Tragen.

Nun läuft alles und ich bin wieder einen grossen Schritt nach vorne gekommen.

Habt vielen Dank für eure Hilfe Very Happy
Gast



Verfasst am:
16. Aug 2010, 07:54
Rufname:


AW: In Endlosliste/-formular VBA für jede DS-Zeile neu ausfü - AW: In Endlosliste/-formular VBA für jede DS-Zeile neu ausfü

Nach oben
       Version: Office 2003

Hallo,
schön das es läuft, aber wie bereits geschrieben, halte ich dieses Recordset für überflüssig.
Erstelle eine Abfrage, in welcher zu deinen Formulardaten die "Berechnung" durchführst. Diese Abfrage bindest du dann an dein Formular.

Btw:
Like ist die langsamste Version eines Vergleiches. Warum nicht einfach ein "="?

Gruß Mike
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage in Formular einbinden? 1 Percobodio 2045 29. Apr 2005, 11:29
lothi Abfrage in Formular einbinden?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrageergebnis als neues Formular anzeigen 2 mila 3034 12. Apr 2005, 12:38
mila Abfrageergebnis als neues Formular anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfragen im Formular aufrufen, automatisch bestätigen 3 Calvin22 1606 12. Apr 2005, 12:12
Willi Wipp Abfragen im Formular aufrufen, automatisch bestätigen
Keine neuen Beiträge Access Tabellen & Abfragen: Anzahl der Datensätze zählen (im Formular oder Bericht) ? 3 anna-bolika 3756 31. März 2005, 12:50
Dalmatinchen Anzahl der Datensätze zählen (im Formular oder Bericht) ?
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. Access Tabellen & Abfragen: Formular Daten in einer Tabelle speichern? 1 Gast 1017 24. März 2005, 16:24
Willi Wipp Formular Daten in einer Tabelle speichern?
Keine neuen Beiträge Access Tabellen & Abfragen: mehrer abfragen ein formular 1 romu 719 10. Jan 2005, 15:54
lothi mehrer abfragen ein formular
Keine neuen Beiträge Access Tabellen & Abfragen: kreuzabfrage ausführen nach vorgeschaltetem formular mit kom 4 Gast 887 21. Dez 2004, 15:17
Gast kreuzabfrage ausführen nach vorgeschaltetem formular mit kom
Keine neuen Beiträge Access Tabellen & Abfragen: Formeln vom Formular, werden in der Abfrage nicht angezeigt 4 maddes 895 23. Nov 2004, 12:38
Skogafoss Formeln vom Formular, werden in der Abfrage nicht angezeigt
Keine neuen Beiträge Access Tabellen & Abfragen: Zeile der Dateneingabe (*) in einem Formular verschieben 2 Albertus 790 08. Okt 2004, 09:17
Albertus Zeile der Dateneingabe (*) in einem Formular verschieben
Keine neuen Beiträge Access Tabellen & Abfragen: Suchfunktion mit mehreren Kriterien aus Formular 5 Danny G. 2218 09. Sep 2004, 11:08
Danny G. Suchfunktion mit mehreren Kriterien aus Formular
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle, Formular, Abfrage...und nun ? 3 Gags 790 29. Aug 2004, 22:05
lothi Tabelle, Formular, Abfrage...und nun ?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfragefeld nachträglich in Formular 3 Sebbl 1705 05. Aug 2004, 15:14
mabe38 Abfragefeld nachträglich in Formular
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: MS Frontpage