Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Feldinhalt einer Tabelle als Bedingung
zurück: Problem mit einfacherer Insert Into Anweisung weiter: SQL Array Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
INGDario
Erfahrung mit VBA


Verfasst am:
25. Apr 2014, 12:01
Rufname:
Wohnort: bei Heilbronn

Feldinhalt einer Tabelle als Bedingung - Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Hallo!

In einer DB habe ich eine Tabelle "tbl_Faktoren" mit einem Feld "[fld_Bedingung]". In diesem Feld ist eine für die aktuelle DB gültige Bedingung eingetragen:
Code:
Mid(tbl_Daten.fld_Bedingung, 3, 1) = 'X'
Auf dieses Feld wird mittels einer globalen Variablen in diversen Prozeduren zugegriffen, z.B. in SQL. Die Variable heißt "Bed_x":
Code:
    Bed_x = DLookup("[fld_Bedingung]", "tbl_Daten")
In SQL funktioniert diese Bedingung einwandfrei:
Code:
    Set rst = db.OpenRecordset("SELECT * FROM tbl_Daten WHERE " & Bed_x)
Diese Bed_x muss aber auch noch in einer normalen Prozedur verarbeitet werden. Hier bricht das Programm aber immer ab (Fehler 13, Typen unvertäglich):
Code:
    If Bed_x Then                                         ' funktioniert nicht
    If Mid(tbl_Daten.fld_Bedingung, 3, 1) = "X" Then      ' funktioniert
Wenn ich im Direktfenster den Befehl eingebe:
Code:
x = Mid(tbl_Daten.fld_Bedingung, 3, 1) = 'X'
? x
kommt je nach Inhalt des aktuellen Datensatzes True oder False

Wenn ich stattdessen im Direktfenster den Befehl so eingebe:
Code:
x = "Mid(tbl_Daten.fld_Bedingung, 3, 1) = 'X'"
? x
kommt
Code:
Mid(tbl_Daten.fld_Bedingung, 3, 1) = 'X'
also das gleiche wie in der Variablen. Aber in einer String-Variablen kann man doch die Anführungszeichen am Anfang und Ende nicht entfernen.
Weiß jemand einen "geheimen" Befehl oder eine andere Lösung, damit die Variable auch in der IF-Klausel funktioniert? Ich habe schon alle möglichen Varianten von CVar bis Eval probiert, aber alles ohne Erfolg.

Vielen Dank schon mal.
Blackpit
Im Profil kannst Du frei den Rang ändern


Verfasst am:
25. Apr 2014, 12:06
Rufname:

AW: Feldinhalt einer Tabelle als Bedingung - AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Hallo,
Zitat:
...einen "geheimen" Befehl...
hast Du EVal schon getestet?
Code:
? EVal(Bed_x)
Gruß

BP
INGDario
Erfahrung mit VBA


Verfasst am:
25. Apr 2014, 12:47
Rufname:
Wohnort: bei Heilbronn

AW: Feldinhalt einer Tabelle als Bedingung - AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Hallo,

ja, den Befehl habe ich auch schon in allen Varianten ausprobiert, ohne Erfolg
(Laufzeitfehler 2482, kann den eingegebenen Namen "tbl_Daten" nicht finden.)
Willi Wipp
Moderator


Verfasst am:
26. Apr 2014, 14:29
Rufname:
Wohnort: Raum Wiesbaden

Re: Feldinhalt einer Tabelle als Bedingung - Re: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Hi INGDario,

dann versuche es mal mit Mid(fld_Bedingung, 3, 1) = 'X' als Feldeintrag.

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
INGDario
Erfahrung mit VBA


Verfasst am:
28. Apr 2014, 08:39
Rufname:
Wohnort: bei Heilbronn

AW: Feldinhalt einer Tabelle als Bedingung - AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Hallo Willi,

vielen Dank, aber das funktioniert leider auch nicht. Es erscheint die gleiche Fehlermeldung (13 - Typen unverträglich)
Nouba
nicht ganz unwissend :)


Verfasst am:
28. Apr 2014, 09:55
Rufname:
Wohnort: Berlin

AW: Feldinhalt einer Tabelle als Bedingung - AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Hallo,

vielleicht hilft Dir ja die FAQ 3.15 Variablen in Abfragen verwenden weiter.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
INGDario
Erfahrung mit VBA


Verfasst am:
28. Apr 2014, 10:23
Rufname:
Wohnort: bei Heilbronn

AW: Feldinhalt einer Tabelle als Bedingung - AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Hi Nouba,

das habe ich auch schon erfolglos probiert. Das funktioniert wunderbar in Abfragen oder in SQL, aber nicht direkt im Code.
Code:
Set rst = db.OpenRecordset("SELECT * FROM tbl_Daten WHERE " & Bed_x)          ' Funktioniert
Set rst = db.OpenRecordset("SELECT * FROM tbl_Daten WHERE " & fctSendVar())   ' Funktioniert auch
If Bed_x Then                                                                 ' Funktioniert nicht
If fctSendVar() Then                                                          ' Funktioniert auch nicht
Fehlermeldung wie immer (13 - Typen unverträglich)
Nouba
nicht ganz unwissend :)


Verfasst am:
28. Apr 2014, 10:37
Rufname:
Wohnort: Berlin

AW: Feldinhalt einer Tabelle als Bedingung - AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Hallo,

dann baue bitte ein Minimalbeispiel, in dem sich die Problematik widerspiegelt (möglichst im 2003er Format) und lade es hier hoch - ggf. vorher den Zutritt zur Upload-Gruppe im Forum beantragen.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
MissPh!
Office-VBA-Programmiererin


Verfasst am:
28. Apr 2014, 12:42
Rufname:
Wohnort: NRW

Re: AW: Feldinhalt einer Tabelle als Bedingung - Re: AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Hallo,

die Beispiele sind eigentlich leicht nachstellbar, auch ohne Beispiel-DB.
INGDario - 28. Apr 2014, 10:23 hat folgendes geschrieben:
Das funktioniert wunderbar in Abfragen oder in SQL, aber nicht direkt im Code.
If Bed_x Then ' Funktioniert nicht
Das kann es ja auch nicht, so ohne weiteres. Aber auch Eval() funktioniert hier nicht, es sei denn, du wendest folgenden "Trick" an:
Code:
Bed_x = Replace (Bed_x, "tbl_Daten.fld_Bedingung", "'" & Me!fld_bedingung & "'")
If Eval(Bed_x) Then
Zu klären wäre aber zunächst noch, woher der Vergleichswert überhaupt genommen werden soll.
Ich habe mal angenommen, das Feld befindet sich im Formular.
Zitat:
If fctSendVar() Then ' Funktioniert auch nicht[/code]Fehlermeldung wie immer (13 - Typen unverträglich)
Was ist das denn für eine Funktion?
_________________
Gruß MissPh!
INGDario
Erfahrung mit VBA


Verfasst am:
28. Apr 2014, 14:18
Rufname:
Wohnort: bei Heilbronn

AW: Feldinhalt einer Tabelle als Bedingung - AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

DANKE MissPh! Very Happy
Genau das war's! Seit Ewigkeiten probiere ich an diesem Befehl rum, und endlich, endlich klappts.
Da ich schon dabei war, eine Beispiel-DB zu erzeugen, kann ich den funktionierenden Code gleich beifügen (der Code befindet sich in einem Formular mit einem Kombinationsfeld zur Auswahl des Schlüssels).
Code:
Option Compare Database

Public dbs As DAO.Database                  ' Aktuelle Datenbank (current.db)
Public rst As DAO.Recordset                 ' Recordset in aktueller Datenbank
Public Bedingung As String                  ' Bedingung im Feld [fld_Bedingung] in "tbl_Faktoren"
Public akt_Schluessel As String             ' aktuell selektierter Schlüssel, für den eine Berechnung durchgeführt werden muss

Private Sub BF_OK_Click()
    On Error GoTo Err_BF_OK_Click
'   in tbl_Faktoren gibt es nur 1 Datensatz, daher in DLookup keine Bedingung nötig
    Bedingung = DLookup("[fld_Bedingung]", "tbl_Faktoren")
'   Eintrag im fld_Bedingung >>>  Mid(tbl_Daten.Schluessel, 3, 1) = 'X'
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("tbl_Daten")
    With rst
        .Index = "PrimaryKey"
        .Seek "=", Me.KBF_Schluessel.Value
'       je nach gewähltem Schlüssel soll eine bestimmte Berechnung durchgeführt werden
        Bedingung = Replace(Bedingung, "tbl_Daten.Schluessel", "'" & !Schluessel & "'")
'       Das Feld [geaendert] ist ein Ja/Nein Feld in tbl_Daten
        If !geaendert = False And Not Eval(Bedingung) Then
            [Berechne_Was]
        ElseIf !geaendert = False And Eval(Bedingung) Then
            [Berechne_Was_Anderes]
        ElseIf !geaendert = True Then
            [Berechne_Garnix]
        End If
    End With
   
Normales_Ende:
    Set rst = Nothing
    Set dbs = Nothing
    On Error GoTo 0
    Exit Sub
   
Err_BF_OK_Click:
    MsgBox "Fehler " & Err.Number & " - " & Err.Description
    Resume Normales_Ende
End Sub


Die Funktion fctSendVar() vom Beispiel weiter oben hat sich bezogen auf die Antwort von Nouba
Zitat:
vielleicht hilft Dir ja die FAQ 3.15 Variablen in Abfragen verwenden weiter.

Danke an alle, die sich hier Gedanken gemacht und mir wirklich weitergeholfen haben!
MissPh!
Office-VBA-Programmiererin


Verfasst am:
28. Apr 2014, 15:01
Rufname:
Wohnort: NRW

AW: Feldinhalt einer Tabelle als Bedingung - AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Zitat:
Die Funktion fctSendVar() vom Beispiel weiter oben
Meine Frage zielte eher darauf ab, wie du das spezielle Problem in der Funktion umgesetzt hast. Wink
_________________
Gruß MissPh!
INGDario
Erfahrung mit VBA


Verfasst am:
28. Apr 2014, 15:12
Rufname:
Wohnort: bei Heilbronn

AW: Feldinhalt einer Tabelle als Bedingung - AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

War ein Versuch wie von donkarl beschrieben, kam aber die gleiche Fehlermeldung wie sonst (13 - Typen unverträglich)
Code:
Public Function fctSendVar() ' auch mit String oder Variant probiert
   fctSendVar = Bedingung_KDM
End Function

If fctSendVar() Then
   [Berechne_Was]
End If
MissPh!
Office-VBA-Programmiererin


Verfasst am:
28. Apr 2014, 15:17
Rufname:
Wohnort: NRW

AW: Feldinhalt einer Tabelle als Bedingung - AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Hi,

auch das ist erklärbar, denn "Bedingung_KDM" ist ja (unausgewertet) lediglich ein String und den kannst du nicht auf True oder False abfragen.

_________________
Gruß MissPh!
INGDario
Erfahrung mit VBA


Verfasst am:
28. Apr 2014, 15:28
Rufname:
Wohnort: bei Heilbronn

AW: Feldinhalt einer Tabelle als Bedingung - AW: Feldinhalt einer Tabelle als Bedingung

Nach oben
       Version: Office 2010

Danke MissPH!
Jetzt weiß ich darüber auch besser Bescheid. Aber wenn man wie ich seit Ewigkeiten die Lösung sucht und nicht findet, versucht man halt alles Mögliche - und sei es noch so unlogisch.
Aber jetzt funktioniert ja alles bestens und ich kann mich wieder den wichtigen Dingen des Lebens widmen ... Laughing
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: Kreuztabellenabfrage für neue Tabelle nutzen 3 WaterMan 805 06. Jul 2004, 14:39
mabe38 Kreuztabellenabfrage für neue Tabelle nutzen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle exportieren als Excel2000 Arbeitsblatt 1 thomassch 916 06. Jul 2004, 12:46
stpimi Tabelle exportieren als Excel2000 Arbeitsblatt
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage mit Count Feld in Verbindung mit Bedingung Like 5 Gast 1287 01. Jul 2004, 18:15
Willi Wipp Abfrage mit Count Feld in Verbindung mit Bedingung Like
Keine neuen Beiträge Access Tabellen & Abfragen: tabelle exportieren 1 Gast 1501 01. Jun 2004, 12:25
Willi Wipp tabelle exportieren
Keine neuen Beiträge Access Tabellen & Abfragen: Duplikate einer Tabelle löschen?! 3 Esel 2108 28. Mai 2004, 08:53
lothi Duplikate einer Tabelle löschen?!
Keine neuen Beiträge Access Tabellen & Abfragen: Spaltennamen einer Tabelle ermitteln 1 Alexander Neron 899 27. Mai 2004, 13:47
lothi Spaltennamen einer Tabelle ermitteln
Keine neuen Beiträge Access Tabellen & Abfragen: kein Wert in der Tabelle, dann immer Null (0)?? 3 Michel_9 1005 26. Mai 2004, 14:28
Michel_9 kein Wert in der Tabelle, dann immer Null (0)??
Keine neuen Beiträge Access Tabellen & Abfragen: Das ausführen einer Abfrage an eine Bedingung knüpfen?! 1 MS 574 15. Mai 2004, 09:02
Robsl Das ausführen einer Abfrage an eine Bedingung knüpfen?!
Keine neuen Beiträge Access Tabellen & Abfragen: Operant aus Tabelle in Abfrage verwenden 3 AccessGeek 673 06. Mai 2004, 09:15
lothi Operant aus Tabelle in Abfrage verwenden
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle formatiert in txt-Datei exportieren 1 robby 1115 12. Apr 2004, 23:10
Helge Tabelle formatiert in txt-Datei exportieren
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle aus Abfrage erstellen 1 dasti 3317 09. Apr 2004, 12:14
Gast Tabelle aus Abfrage erstellen
Keine neuen Beiträge Access Tabellen & Abfragen: Zeilenumbruch nach Einfügen Word Tabelle 2 topflop 1698 30. März 2004, 16:06
Gast Zeilenumbruch nach Einfügen Word Tabelle
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML CSS