Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

[gelöst] Zuweisung RecordSource funktioniert nicht

Begonnen von Minotauros, Oktober 02, 2020, 11:42:36

⏪ vorheriges - nächstes ⏩

Minotauros

Guten Tag

Der folgende Code lässt mein Unterformular einfach kalt. RecordSource bleibt gleich und wird nicht aktualisiert und das ohne einen Fehler anzuzeigen.

Me.subAufstellung.Form.RecordSource = sqlTotal
    Me.subAufstellung.Form.Requery

Wird der gleiche in SQL-String in einer Abfrage geöffnet funktioniert er einwandfrei: Also kann es nicht am String liegen...

CurrentDb.QueryDefs("qryTotal").sql = sqlTotal
An anderen Stellen im Programm funktioniert die Zuweisung eines Strings zu der RecordSource-Property eines Unterformulars ganz normal: Also kann es nicht am Code liegen...

Woran kann es dann liegen?

Ich kann die RecordSource-Eigenschaft natürlich manuell der Abfrage "qryTotal" zuweisen, aber ich würde halt gerne den SQL-String automatisch mit VBA zuweisen, damit ich keine zusätzliche Abfrage benötige.

Vielen Dank für aufschlussreiche Hinweise


PS: Der SQL-String wird dynamisch erzeugt. Hier ein Beispiel von einem:
SELECT Sum(NettoBetrag) AS NettoSumme, Sum(RabattBetrag) AS RabattSumme, Sum(SkontoBetrag) AS SkontoSumme, Sum(NettoNetto) AS NettoNettoSumme, Sum(MWSTBetrag) AS Summe_MWST, Sum(BruttoBetrag) AS SummteTotal
FROM (SELECT Netto.PositionID, Objekt, Menge, Nettopreis, [MWST-Satz], NettoBetrag, Rabatt AS RabattBetrag, Nettobetrag*0.02 AS SkontoBetrag, NettoBetrag-RabattBetrag-SkontoBetrag AS NettoNetto, [MWST-Satz]*NettoNetto AS MWSTBetrag, NettoNetto+MWSTBetrag AS BruttoBetrag FROM (SELECT PositionID, Sum(RabattBetrag) AS Rabatt FROM (SELECT PositionID, 0 AS RabattBetrag FROM (SELECT PositionID, Bezeichnung AS Objekt, Menge, Einzelpreis AS Nettopreis, Nettopreis*Menge AS NettoBetrag, [MWST-Satz] FROM tblObjekt INNER JOIN (tblMenge INNER JOIN (tblPosition INNER JOIN tblPreis ON tblPosition.PositionID = tblPreis.Position_F) ON tblMenge.Position_F = tblPosition.PositionID) ON tblObjekt.ObjektID = tblMenge.Objekt_F WHERE tblPosition.Liste_F = 38)) AS Rabattpreise GROUP BY PositionID) AS Rabatt INNER JOIN (SELECT PositionID, Bezeichnung AS Objekt, Menge, Einzelpreis AS Nettopreis, Nettopreis*Menge AS NettoBetrag, [MWST-Satz] FROM tblObjekt INNER JOIN (tblMenge INNER JOIN (tblPosition INNER JOIN tblPreis ON tblPosition.PositionID = tblPreis.Position_F) ON tblMenge.Position_F = tblPosition.PositionID) ON tblObjekt.ObjektID = tblMenge.Objekt_F WHERE tblPosition.Liste_F = 38) AS Netto ON Rabatt.PositionID = Netto.PositionID)  AS Aufstellung;

ShenTo19

Hallo,
meines Erachtens gehört nach "Me" das Ausrufezeichen, also Me!subAufstellung.Form.RecordSource =
VBA reagiert da manchmal empfindlich ohne beim Debuggen einen Fehler zu erkennen.
Gruß Thomas

Minotauros

Hallo Thomas

Vielen Dank.
Das Problem hat sich mit dem "!-Operator" erledigt. Ich weiss allerdings nicht warum. Denn an etwa 5 Stellen in meinem Programm verwende ich für die gleiche Aufgabe den ".-Operator". Und alle Parameter nach "Me" können mit Intellisense ausgewählt werden.

ShenTo19

#3
Hallo,
ich fand gerade diese Stelle, die auf dieses Problem näher eingeht. Etwas verwirrend für Normalos wie mich, muss mich mal näher damit befassen:
http://www.office-loesung.de/p/viewtopic.php?f=167&t=752651
Gruß Thomas
PS: Weiterer Link:
http://dbwiki.net/wiki/VBA_Grundlagen:_Verwendung_des_!-Operators

PhilS

Zitat von: Minotauros am Oktober 02, 2020, 16:06:59Das Problem hat sich mit dem "!-Operator" erledigt.
Das ergibt nicht wirklich Sinn. Wenn der Ausdruck nicht aufgelöst werden konnte, hätte das einen Kompilierfehler oder später mindestens einen Laufzeitfehler geben müssen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ShenTo19

Hallo,
ich hatte kürzlich ein ähnliches Problem, bei dem in einem Textfeldbezug der Punkt einen Fehler verursachte und der Bang-Operator dies Problem löste, und zwar ohne Kompilierfehler. Beim Ausführen des Codes kam, wenn ich mich recht erinnere, die Fehlermeldung: "Das Objekt unterstützt diese Methode nicht".
Gruß Thomas