Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
'Controls' in einer Abfrage verwenden
zurück: Erstellung einer Bestellungsverfolgung weiter: Tabellen zusammenfügen 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
mordor
Im Profil kannst Du frei den Rang ändern


Verfasst am:
23. Jun 2008, 10:48
Rufname:

'Controls' in einer Abfrage verwenden - 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Hallo @all,

habe folgendes Problem:
In einem Form baue ich ich mir einen String zusammen der sich unter anderem
aus Werten zusammen setzt die aus Feldnamen referenzieren. Wie folgt:
Code:
=Controls([1_Teil]) & Controls([2_Teil]) & ... & Controls([6_Teil])
Da ich diesen String nun mehrfach verschachtelt habe und ihn oft benötige,
möchte hierfür gern einen temporären Wert in der Abfrage erstellen.
In der Art:
Code:
Ausdr1: Controls([1_Teil]) & Controls([2_Teil]) & ... & Controls([6_Teil])
aber anscheinend kann sql mit dem "Controls" nichts anfangen.
Wie also muss der Befehl in der Abfrage lauten, damit ich den
über den Feldnamen referenzierten Wert erhalte?

thx
Christian
JörgG
Access-Team


Verfasst am:
23. Jun 2008, 12:47
Rufname:
Wohnort: b. Dresden


AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Hallo,

Abfragen haben keine Steuerelemente, also lass das Controls weg und verwende nur die Spaltennamen.

_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.
mordor
Im Profil kannst Du frei den Rang ändern


Verfasst am:
23. Jun 2008, 13:08
Rufname:

AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Hallo Jörg,

Das ergibt keinen Sinn und liefert mir keine Lösung. Weil der Feldinhalt der
Spaltenname ist, welcher den eigentlich anzuzeigenden Wert enthält.

Christian
rita2008
Im Profil kannst Du frei den Rang ändern


Verfasst am:
23. Jun 2008, 15:36
Rufname:
Wohnort: Berlin

AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Du willst also die Feldnamen zusammensetzen? Was soll das denn für einen Sinn haben?
_________________
mfg Rita

Antworten bitte hier im Forum, nicht als private Nachricht. Danke
mordor
Im Profil kannst Du frei den Rang ändern


Verfasst am:
24. Jun 2008, 11:02
Rufname:


AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Hi Rita,

nein ich möchte keine Feldnamen zusammensetzen, sondern vielmehr
deren Ihnalte. Das Ganze hat folgenden Hintergrund:
Es lässt sich ein benutzerspezifischer Kunden_TAG zusammenstellen,
der insgesamt aus sechs Teilen bestehen kann. Die Reihenfolge und die
Anzahl der Teile sind variabel. Zwischen den einzelnen Teilen kann
es auch noch Trennzeichen geben auf die ich hier aber nicht weiter
eingehen möchte. Ich habe das ganze über sechs combo-elemente
aufgebaut. Hier kann der Benutzer über die Auswahl des entsprechenden
Feldnamens alle benötigten Teile in die richtige Reihenfolge bringen.
Die Datenherkunft ist bei allen sechs Combo-Feldern die gleiche, eine
Abfrage als Typ Feldliste. Somit wird der Feldname als Wert eingetragen,
der darauf verweist welcher Inhalt eigentlich an seiner Stelle stehen sollte.

Im formular funktioniert das mit dem Befehl: Controls([Feldname])
Der Ausdruck ist mittlerweile aber sehr lang und verschachtelt
geworden, dazu kommt, das ich die Darstellung jetzt in jedem Formular
und Bericht brauche, sodaß ich mir den TAG lieber an einer zentralen
Stelle zusammenbaue anstatt verteilt in jedem Form und Report.
Also wer weis wie's geht, bitte schreibe er/sie jetzt. Danke!

Christian
JörgG
Access-Team


Verfasst am:
24. Jun 2008, 11:14
Rufname:
Wohnort: b. Dresden

AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Hallo,

dann speichere doch den zusammengesetzten Wert in einer globalen Variable. Zusätzlich, im Datenbankfenster - Module - evtl Neu:
Code:
Option Compare Database
Option Explicit

Public strKundenTag As String

Public Function FktKundenTag() As String
    FktKundenTag = strKundenTag
End Function

In Abfragen kannst Du jetzt den Variableninhalt mittels der Funktion holen:
Code:
Ausdr1: FktKundenTag()

Wo Du die Variable im Formular füllst, weisst Du sicher am Besten.

Idea Tritt in der DB ein unbehandelter Fehler auf, verlieren ALLE Variablen ihren Wert!!!

_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.
mordor
Im Profil kannst Du frei den Rang ändern


Verfasst am:
24. Jun 2008, 15:25
Rufname:

AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

@JörgG,

der Ansatz ist gut, funktioniert aber nur dann wenn ich in der Funktion
den Feldnamen rekursiv auflösen kann.
Denn wenn ich meine Spalten 1_Teil, 2_Teil ... 6_Teil auslese, dann enthalten
diese Werte wie z.B. MSR_TAG_Kunde, SIGNAL_Kunde u.s.w.
Das sind aber nicht die Werte die ich darstellen will sondern die SPALTENNAMEN
die die Werte beinhalten.
Im übrigen befinden sich die definierenden Spalten 1_Teil, 2_Teil ... 6_Teil
in einer anderen Tabelle als die Kenngrößen für den TAG.
Es muß eine simple Lösung hierfür geben, vielleicht direkt über sql?

Christian
JörgG
Access-Team


Verfasst am:
24. Jun 2008, 15:44
Rufname:
Wohnort: b. Dresden

AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Hallo,

was willst Du eigentlich, einmal redest Du von Spaltennamen, dann von ihren Werten . . . Confused

_________________
MfG, Jörg Very Happy

Bitte das Feedback nicht vergessen.
rita2008
Im Profil kannst Du frei den Rang ändern


Verfasst am:
24. Jun 2008, 16:10
Rufname:
Wohnort: Berlin

AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

so (Wie greife ich in VBA auf die Werte einer Tabelle zu?) kannst Du in der Funktion auf die Werte der Tabelle zugreifen.
Damit sollte es doch möglich sein, die Zeichenkette entsprechend zusammenzusetzen, wenn nicht, lade mal eine Beispiel-DB mit den entsprechenden Tabellen hoch.

_________________
mfg Rita

Antworten bitte hier im Forum, nicht als private Nachricht. Danke
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
24. Jun 2008, 16:30
Rufname:
Wohnort: Hannover

AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Hi,
das kommt davon, wenn man mit MetaDaten spielt 8)
1. klar ist doch, das Controls in der Abfrage nicht funktioniert, denn das ist eine Abkürzung für Me.Controls wobei das Me wiederum nur eine Abkürzung für das aktuell gültige FormObject ist.
Code:
=Controls([1_Teil]) & Controls([2_Teil]) & ... & Controls([6_Teil])
Wenn das aufgelöst wurde (innerhalb des Formulars), ist das doch nur ein einfacher statischer String oder nicht? Wenn im [1_Teil] Feld ein "Feld7" drinstünde, dann wäre das Ergebnis von Controls([1_Teil]) ja der INHALT des Feld7 Textfeldes, und das ist doch ein Textwert.
Dieser finale String kann dann doch mit der von Jörg beschriebenen Methode der Abfrage zur Verfügung gestellt werden, die muss da gar nix mehr auflösen (und schon gar nicht rekursiv 8) )

_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
mordor
Im Profil kannst Du frei den Rang ändern


Verfasst am:
03. Jul 2008, 13:55
Rufname:

AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Hallo,
bin in der Thematik leider noch nicht weiter gekommen, habe den Vorschlag
von JörgG nun umgesetzt und hänge an der gleichen Stelle wie vorher.
Meine Spalte z.B. [1_Teil] enthält den Wert: MSR_Kunde
welcher die Spalte repräsentiert, die ich auslesen möchte.
Diesen Wert habe ich über eine Variable in eckige Klammern gesteckt,
und versucht sie dann über den Recordset erneut auszulesen. Fehlanzeige!
(Debugmeldung: "Element in dieser Auflistung nicht gefunden")
Wer kann helfen?
Code:
Option Compare Database
Option Explicit
Public db As DAO.Database
Public rs As DAO.Recordset
Public strSQL As String
Public var1, var2, var3

Public Function FktKundenTagNr() As String
    Set db = CurrentDb                 ' Datenbank definieren
    strSQL = "SELECT * FROM ABF_DATASET_ÄNDERN_FKT"   ' beliebigen SQL definieren
    Set rs = db.OpenRecordset(strSQL)  ' Recordset öffnen
    If Not rs.EOF Then rs.MoveFirst    ' Zum ersten Datensatz
    var1 = rs![1_Teil]
    var2 = "[" & var1 & "]"
    var3 = rs!var2
    FktKundenTagNr = var3
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Function

Chrsitan
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
03. Jul 2008, 15:19
Rufname:
Wohnort: Hannover

AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Hi,
Du referenzierst Die Spalten der Abfrage falsch.
also
Code:
    var1 = rs![1_Teil]
    var2 = "[" & var1 & "]"
    var3 = rs!var2
da die Abfrage keine Spalte des Namens "var2" hat, kommt es zu einer Fehlermeldung.
Code:
    var1 = rs![1_Teil]
    var2 = "[" & var1 & "]"
    var3 = rs.Fields(var2)
würde gehen, da aber Fields die Standardeigenschaft ist, geht auch.
Code:
    var1 = rs![1_Teil]
    var2 = "[" & var1 & "]"
    var3 = rs(var2)
aber dann kann man auch gleich schreiben:
Code:
    var3 = rs("[" & rs("1_Teil") & "]")

RS!Spaltenname oder RS("Spaltenname") oder RS![Spaltenname] oder RS("[Spaltenname]") oder
spalte = "Spaltenname" und rs(Spalte)

_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
mordor
Im Profil kannst Du frei den Rang ändern


Verfasst am:
04. Jul 2008, 13:10
Rufname:

AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Hi,
die erstellte Funktion rufe ich jetzt aus der Abfrage so auf:
Code:
Ausdr1: FktKundenTagNr()
Nach durchlaufen der Funktion habe ich allerdings in der Spalte Ausdr1 überall
die gleichen Einträge, obwohl diese eigentlich unterschiedlich sein müssten.
Die übergabe des zusammengesetzten Funktionsergebnisses in das Abfrageergebnis scheint nicht zu funktionieren. Wieso?

Christian
Code:
Public Function FktKundenTagNr() As String
    Set db = CurrentDb                                  ' Datenbank definieren
    strSQL = "SELECT * " & _
               "FROM ABF_DATASET_ÄNDERN_FKT"       ' beliebigen SQL definieren
    Set rs = db.OpenRecordset(strSQL)                       ' Recordset öffnen
    If Not rs.EOF Then rs.MoveFirst                     ' Zum ersten Datensatz
    Do While Not rs.EOF
        'Trennfelder auslesen
        varTrenn_1 = rs![1_Teil_0]
        varTrenn_2 = rs![1_Teil_2]
        varTrenn_3 = rs![2_Teil_2]
        varTrenn_4 = rs![3_Teil_2]
        varTrenn_5 = rs![4_Teil_2]
        varTrenn_6 = rs![5_Teil_2]
        varTrenn_7 = rs![6_Teil_2]
        '1. Trennfeld (trenn_1) erstellen
        'Wenn der Ihnalt des Feldes Null ist dann
        If IsNull(rs.Fields(rs![1_Teil_1])) Then
            trenn_1 = ""         'wird auch kein Trennzeichen davor ausgegeben
          Else
            If InStr(1, varTrenn_1, "!!!") > 0 Then    'Wenn !!! gefunden dann
                trenn_1 = " "                            'Leerzeichen zuweisen
              Else                                                      'sonst
                trenn_1 = varTrenn_1                  'Variable interpretieren
            End If
        End If
        '2. Trennfeld (trenn_2) erstellen
        'Wenn der Ihnalt des Feldes Null ist dann
        If IsNull(rs.Fields(rs![2_Teil_1])) Then
            trenn_2 = ""         'wird auch kein Trennzeichen davor ausgegeben
          Else
            If InStr(1, varTrenn_2, "!!!") > 0 Then    'Wenn !!! gefunden dann
                trenn_2 = " "                            'Leerzeichen zuweisen
              Else                                                      'sonst
                trenn_2 = varTrenn_2                  'Variable interpretieren
            End If
        End If
        '3. Trennfeld (trenn_3) erstellen
        'Wenn der Ihnalt des Feldes Null ist dann
        If IsNull(rs.Fields(rs![3_Teil_1])) Then
            trenn_3 = ""         'wird auch kein Trennzeichen davor ausgegeben
          Else
            If InStr(1, varTrenn_3, "!!!") > 0 Then    'Wenn !!! gefunden dann
                trenn_3 = " "                            'Leerzeichen zuweisen
              Else                                                      'sonst
                trenn_3 = varTrenn_3                  'Variable interpretieren
            End If
        End If
        '4. Trennfeld (trenn_4) erstellen
        'Wenn der Ihnalt des Feldes Null ist dann
        If IsNull(rs.Fields(rs![4_Teil_1])) Then
            trenn_4 = ""         'wird auch kein Trennzeichen davor ausgegeben
          Else
            If InStr(1, varTrenn_4, "!!!") > 0 Then    'Wenn !!! gefunden dann
                trenn_4 = " "                            'Leerzeichen zuweisen
              Else                                                      'sonst
                trenn_4 = varTrenn_4                  'Variable interpretieren
            End If
        End If
        '5. Trennfeld (trenn_5) erstellen
        'Wenn der Ihnalt des Feldes Null ist dann
        If IsNull(rs.Fields(rs![5_Teil_1])) Then
            trenn_5 = ""         'wird auch kein Trennzeichen davor ausgegeben
          Else
            If InStr(1, varTrenn_5, "!!!") > 0 Then    'Wenn !!! gefunden dann
                trenn_5 = " "                            'Leerzeichen zuweisen
              Else                                                      'sonst
                trenn_5 = varTrenn_5                  'Variable interpretieren
            End If
        End If
        '6. Trennfeld (trenn_6) erstellen
        'Wenn der Ihnalt des Feldes Null ist dann
        If IsNull(rs.Fields(rs![6_Teil_1])) Then
            trenn_6 = ""         'wird auch kein Trennzeichen davor ausgegeben
          Else
            If InStr(1, varTrenn_6, "!!!") > 0 Then    'Wenn !!! gefunden dann
                trenn_6 = " "                            'Leerzeichen zuweisen
              Else                                                      'sonst
                trenn_6 = varTrenn_6                  'Variable interpretieren
            End If
        End If
        FktKundenTagNr = trenn_1 & trenn_2 & trenn_3 & trenn_4 & trenn_5 & _
                         trenn_6
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Function
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
04. Jul 2008, 13:58
Rufname:
Wohnort: Hannover


AW: 'Controls' in einer Abfrage verwenden - AW: 'Controls' in einer Abfrage verwenden

Nach oben
       Version: Office 2007

Hi,
weil die Funktion keinen Parameter hat, der das Ergebnis beeinflussen würde. Du musst doch irgendwie einen Bezug herstellen, zwischen der Zeile der Abfrage und den Ergebnissen der Funktion.
Code:
Public Function FktKundenTagNr(KundenNr AS Long) As String
und dann vielleicht:
Code:
    strSQL = "SELECT * " & _
               "FROM ABF_DATASET_ÄNDERN_FKT " & _
              "WHERE KundenNr=" & KundenNr
und in der Abfrage dann die Kundennummer der Funktion übergeben.
So in der Richtung (kenne Deine Datenstrukturen ja nicht)

_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
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 Rechnet simple addieren formel nicht 3 Seppi 1597 04. März 2004, 13:39
Willi Wipp Abfrage Rechnet simple addieren formel nicht
Keine neuen Beiträge Access Tabellen & Abfragen: [DANKE-ERLEDIGT] Join in einer Abfrage 2 Gast 803 01. März 2004, 08:36
ppc [DANKE-ERLEDIGT] Join in einer Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage aus Formular erstellen 2 frkrone 3248 12. Feb 2004, 14:22
frkrone Abfrage aus Formular erstellen
Keine neuen Beiträge Access Tabellen & Abfragen: Wie kann ich mehr als 255Felder in eine Abfrage legen? 1 D.R. 2235 12. Feb 2004, 09:05
faßnacht(IT); Wie kann ich mehr als 255Felder in eine Abfrage legen?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage verlinken 4 dfo 1326 10. Feb 2004, 22:17
Willi Wipp Abfrage verlinken
Keine neuen Beiträge Access Tabellen & Abfragen: Suche Hilfe zu SQL (DAO 351 MS) - Abfrage 3 Berny_H 1005 04. Feb 2004, 11:41
borstel Suche Hilfe zu SQL (DAO 351 MS) - Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage, die sich auf 2 Abfragen + 1 Tabelle bezieht 1 caro456 1832 27. Jan 2004, 20:03
Willi Wipp Abfrage, die sich auf 2 Abfragen + 1 Tabelle bezieht
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage von Datensätzen ohne Inhalt 3 sebwa 2053 23. Jan 2004, 23:19
Gast Abfrage von Datensätzen ohne Inhalt
Keine neuen Beiträge Access Tabellen & Abfragen: Access abfrage nach 2 parametern 1 Weedy 3466 13. Jan 2004, 00:21
reke Access abfrage nach 2 parametern
Keine neuen Beiträge Access Tabellen & Abfragen: Bestimmte Abfrage erstellen ... nur wie ? 1 studi 2219 22. Dez 2003, 20:51
reke Bestimmte Abfrage erstellen ... nur wie ?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage, ob eine Abfrage ein Ergebnis hat 3 Esdo 3934 09. Dez 2003, 15:53
Fedaykin Abfrage, ob eine Abfrage ein Ergebnis hat
Keine neuen Beiträge Access Tabellen & Abfragen: Access 97 Abfrage Duplikate 9 gast 2419 02. Dez 2003, 14:39
Kay Access 97 Abfrage Duplikate
 

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