Neuigkeiten:

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

Mobiles Hauptmenü

If Abfrage mit Parameterübergabe

Begonnen von Ben.Wisch, Februar 09, 2011, 16:50:32

⏪ vorheriges - nächstes ⏩

Ben.Wisch

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

DF6GL

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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

database

Hallo,

eine kleine Frage von meiner eins:

Table_Exist(TabName)


was bitte ist das, bzw. wie lautet der Code dieser Function dahinter ?

Ben.Wisch

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

database

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

Ben.Wisch

Hallo,

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

Vielen dank für eure schnelle Hilfe

B E N

database

Aber bitte, keine Ursache!  ;)

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