Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Fehler beim Kompilieren: Sub, Function oder Property erwartet

600 views
Skip to first unread message

Peter Wenzel

unread,
Jun 11, 2010, 5:56:45 PM6/11/10
to
Hallo zusammen,

bei folgenden Code kommt es zu dieser Fehlermeldung:

Private Sub btnSchichtMi_Click()
Dim strSQL As String
Dim db As DAO.Database
Set db = CurrentDb
Dim msg As Long
msg = MsgBox("Sind Sie sicher, dass diese Schicht mit allen
dazugehᅵrigen Daten gelᅵscht werden soll?", vbYesNo,
"Lᅵschbestᅵtigung")
Select Case msg
Case 6
strSQL = "UPDATE tblSchichten INNER JOIN (tblProduktion INNER
JOIN tblImport ON tblProduktion.ID = tblImport.IDStᅵck) ON
tblSchichten.ID = tblProduktion.IDSchichten SET tblImport.IDStᅵck =
Null " & _
"WHERE tblSchichten.ID = " & Me.lstSchichten
db.Execute strSQL
strSQL "DELETE FROM tblProduktion WHERE IDSchichten = " &
Me.lstSchichten
db.Execute strSQL
strSQL = "DELETE FROM tblSchichten WHERE ID = " &
Me.lstSchichten
db.Execute strSQL
Set db = Nothing
Case 7
Exit Sub
Case Else
MsgBox "Fehler!"
End Select
Me.lstSchichten.Requery
Me.lstProdMafᅵ.Requery
Me.lstZSP.Requery
End Sub

Markiert wird in der Zeile ---strSQL "DELETE FROM tblProduktion WHERE
IDSchichten = " & Me.lstSchichten--- der Teil ".lstSchichten"
Der Name des Steuerelementes ist korrekt, was kᅵnnte das fᅵr Ursachen
haben?


Gruᅵ
Peter


KD Gundermann

unread,
Jun 11, 2010, 6:31:11 PM6/11/10
to
> strSQL "DELETE FROM tblProduktion WHERE IDSchichten = " &
> Me.lstSchichten
Hallo Peter,
Also wenn ich das richtig sehe, dann fehlt hier das = Zeichen fuer die
Zuweisung.

Viele Gruesse

Klaus

Thomas Möller

unread,
Jun 12, 2010, 3:05:20 AM6/12/10
to
Hallo Peter,

die Lᅵsung fᅵr Dein Problem hast Du ja schon erhalten. Mir fᅵllt noch
auf, dass Du in Deinem Code so genannte "magische Zahlen" verwendest.

Im Select-Case-Statement reagierst Du auf den Rᅵckgabewert der
MsgBox-Funktion. Dabei fragst Du auf die Werte 6 und 7 ab. Wofᅵr stehen
jetzt 6 und 7?

Besser ist es, statt der Zahlen entsprechende Konstanten zu verwenden,
die ᅵber Ihren Namen deutlich machen, was der Wert bedeutet. In diesem
Fall sind die Konstanten schon vorhanden. Sie heiᅵen "vbYes" und "vbNo".

Dein Code wᅵrde dann so aussehen:

Select Case msg
Case vbYes
' ..
Case vbNo
' ..
Case Else
' ..
End Select

Dein Code ist jetzt besser lesbar und damit leichter verstᅵndlich.
Spᅵtestens wenn Du den Code einmal anpassen musst wirst Du das zu
schᅵtzen wissen.


CU
--
Thomas

Homepage: www.Team-Moeller.de

Helmut Meukel

unread,
Jun 12, 2010, 5:53:43 AM6/12/10
to
"Peter Wenzel" <mr.id...@web.de> schrieb im Newsbeitrag
news:b9702$4c12b115$588245d6$12...@usenext.news-service.com...

> Hallo zusammen,
>
> bei folgenden Code kommt es zu dieser Fehlermeldung:
>
> Private Sub btnSchichtMi_Click()
> Dim strSQL As String
> Dim db As DAO.Database
> Set db = CurrentDb
> Dim msg As Long
> msg = MsgBox("Sind Sie sicher, dass diese Schicht mit allen dazugehörigen
> Daten gelöscht werden soll?", vbYesNo, "Löschbestätigung")

> Select Case msg
> Case 6
> strSQL = "UPDATE tblSchichten INNER JOIN (tblProduktion INNER JOIN
> tblImport ON tblProduktion.ID = tblImport.IDStück) ON tblSchichten.ID =
> tblProduktion.IDSchichten SET tblImport.IDStück = Null " & _

> "WHERE tblSchichten.ID = " & Me.lstSchichten
> db.Execute strSQL
> strSQL "DELETE FROM tblProduktion WHERE IDSchichten = " &
> Me.lstSchichten
> db.Execute strSQL
> strSQL = "DELETE FROM tblSchichten WHERE ID = " & Me.lstSchichten
> db.Execute strSQL
> Set db = Nothing
> Case 7
> Exit Sub
> Case Else
> MsgBox "Fehler!"
> End Select
> Me.lstSchichten.Requery
> Me.lstProdMafü.Requery

> Me.lstZSP.Requery
> End Sub
>
> Markiert wird in der Zeile ---strSQL "DELETE FROM tblProduktion WHERE
> IDSchichten = " & Me.lstSchichten--- der Teil ".lstSchichten"
> Der Name des Steuerelementes ist korrekt, was könnte das für Ursachen haben?
>
>
> Gruß
> Peter
>

Zu dem was Klaus + Thomas bereits sagten ist noch zusätzlich anzumerken:
es ist keine gute Idee es dem Compiler zu überlassen zu entscheiden ob
mit Me.lstSchichten das Objekt gemeint ist oder seine default property.
Das geht zwar in 95 oder mehr Prozent der Fälle gut, aber halt nicht immer.

Helmut.


Peter Wenzel

unread,
Jun 14, 2010, 2:04:24 AM6/14/10
to
KD Gundermann dachte sehr stark über folgendes nach :

> Hallo Peter,
> Also wenn ich das richtig sehe, dann fehlt hier das = Zeichen fuer die
> Zuweisung.
>

Hallo Klaus,

vielen Dank für deinen gestochen scharfen Blick. OmG, dass man so was
blödes übersieht.

@ Thomas & Helmut:

Vielen Dank für eure Tipps, werde ich brücksichtigen!


Gruß
Peter


Peter Doering

unread,
Jun 14, 2010, 3:11:10 AM6/14/10
to
Helmut Meukel wrote:
> "Peter Wenzel" ...

>>
>> bei folgenden Code kommt es zu dieser Fehlermeldung:
>> [...]

>> Markiert wird in der Zeile ---strSQL "DELETE FROM tblProduktion WHERE
>> IDSchichten = " & Me.lstSchichten--- der Teil ".lstSchichten"
>> Der Name des Steuerelementes ist korrekt, was könnte das für Ursachen haben?
>
> Zu dem was Klaus + Thomas bereits sagten ist noch zusätzlich anzumerken:
> es ist keine gute Idee es dem Compiler zu überlassen zu entscheiden ob
> mit Me.lstSchichten das Objekt gemeint ist oder seine default property.
> Das geht zwar in 95 oder mehr Prozent der Fälle gut, aber halt nicht immer.

Siehe auch www.donkarl.com?FAQ6.3

Gruss - Peter

--
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

0 new messages