Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Ben.Wisch am Februar 09, 2011, 16:50:32

Titel: If Abfrage mit Parameterübergabe
Beitrag von: Ben.Wisch am Februar 09, 2011, 16:50:32
Hallo Zusammen da bin ich wieder, wie eine schlechte Angewohnheit.
Ich habe mir für ein spezielles Problem eine IF Abfrage konstruiert.
Über ein Formular gebe ich den Wert Me!PfadName vor, aber zum
eigentlichen Programmablauf kommt es nicht. Zum einen wird die IF
Bedingung gar nicht erst ausgeführt und der ELSE Zweig kommt mit
einer Fehler Meldung

Laufzeifehler 3464

Datentypen in Kriterienausdruck unverträglich

Sehe ich den Wald mal wieder vor lauter Bäumen nicht ?

   Dim TabName As String
   
   TabName = Me![TabName]
   
   If Table_Exist(TabName) Then
       Nix = MsgBox("Tabelle existiert bereits !", vbCritical, "Abbruch")
       DoCmd.Hourglass False
       Exit Sub
   Else
       sqlCNT = "SELECT * INTO " & TabName & " " & _
                " FROM Mve_Stab_Gesamt" & _
                " WHERE Mve_Stab_Gesamt.ID = 0"
       Debug.Print sqlCNT
       DoCmd.RunSQL sqlCNT
   End If

D A N K E  !!!

B E N
Titel: Re: If Abfrage mit Parameterübergabe
Beitrag von: DF6GL am Februar 09, 2011, 18:03:14
Hallo,

die IF-Bedingung wird doch ausgeführt , wenn der Else-Abschnitt durchlaufen wird...


Welchen Datentyp hat "ID" in der Tabelle "Mve_Stab_Gesamt" ?

Wie heißt  ein Tabellename genau(!), wenn der "Fehler" auftaucht?

Sub Irgendwas ()

   Dim TabName As String, sqlCNT As String

   If Len(nz(Me![TabName],"")) = 0 Then Exit Sub

   TabName = Me![TabName]
   
   If Table_Exist(TabName) Then
        MsgBox "Tabelle existiert bereits !", vbCritical, "Abbruch"
       DoCmd.Hourglass False
       Exit Sub
   Else
       sqlCNT = "SELECT * INTO " & TabName  & _
                " FROM Mve_Stab_Gesamt" & _
                " WHERE Mve_Stab_Gesamt.ID = 0"
       Debug.Print sqlCNT
       DoCmd.RunSQL sqlCNT
   End If

End Sub
Titel: Re: If Abfrage mit Parameterübergabe
Beitrag von: database am Februar 09, 2011, 19:53:57
Hallo,

eine kleine Frage von meiner eins:

Table_Exist(TabName)


was bitte ist das, bzw. wie lautet der Code dieser Function dahinter ?
Titel: Re: If Abfrage mit Parameterübergabe
Beitrag von: Ben.Wisch am Februar 10, 2011, 12:39:11
Hallo Peter (database)

ich habe die Funktion Table_Exist aus einem anderen Beispielprogramm übernommen. Habe mal den dazugehörigen Code beigelegt.

Function Table_Exist(tbl As String) As Integer
    Table_Exist = SysCmd(SYSCMD_GETOBJECTSTATE, acTable, tbl)
End Function

Danke

B E N
Titel: Re: If Abfrage mit Parameterübergabe
Beitrag von: database am Februar 10, 2011, 13:46:47
Hallo,

hab's befürchtet - diese Function liefert als Rückgabewert eine Integerzahl und keinen Wahrheitswert!
Du kannst diese NICHT in einer Bedingung verwenden, wenn diese als Antwort Wahr oder Falsch erwartet (wie in deinem Fall)!

Verwende statt deiner Table_Exist - Function folgende:


Function Tabel_Exist(strTableName As String) As Boolean

 If DCount("*", "MSysObjects", "Name='" & strTableName & "'") Then
      Tabel_Exist = True
 Else
      Tabel_Exist = False
 End If
   
End Function


...die liefert wahr oder falsch zurück und wird entsprechend auch in deiner Bedingung funktionieren.
Den Rest entsprechend den Tipps von DF6GL!


HTH
Titel: Re: If Abfrage mit Parameterübergabe
Beitrag von: Ben.Wisch am Februar 10, 2011, 16:17:52
Hallo,

viele Dank an Peter(database) und DF6GL. Kaum macht mans Richtig, klappts auch ;-))

Vielen dank für eure schnelle Hilfe

B E N
Titel: Re: If Abfrage mit Parameterübergabe
Beitrag von: database am Februar 10, 2011, 16:19:11
Aber bitte, keine Ursache!  ;)

Bitte den Thread in DEINEM Startbeitrag auf 'gelöst' setzen - DANKE