Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Access 2K7 - Aus einer Abfrage eine VBA Funktion mit Variablen aufrufen

Frage Microsoft Microsoft Office

Mitglied: rupi01

rupi01 (Level 1) - Jetzt verbinden

25.09.2009 um 16:37 Uhr, 8341 Aufrufe, 4 Kommentare

Ich benötige dringend Hilfe vom Könner!

Hallo Kollegen,

ich beschäftige mich gerade mit einer Access 2K7 DB.

In dieser DB habe ich eine Abfrage (View) die mir Datensätze aus den verschiednsten Tabellen anzeigt. U.a. sollen hier auch einige Felder berechnet werden. Dazu ist es aber notwendig, einen vorherigen Wert aus dem View auszulesen.

Aus dieser Abfrage, soll nun eine Funktion aufgerufen werden, der 3 (1 ist der Vergleichskey und mit 2 muss gerechnet werden) Variablen übergeben werden müssen. Hier endet mein Latein jetzt. Ich weiß, wie man eine Funktion mit einer Variablen aufruft, aber nicht mit mehreren und kann dazu auch nirgends etwas finden.

Der Aufruf lautet:

Ausdr1: Functionname([Var1], [Var2], [Var3]) -
Fehlermeldung:
Der von Ihnen eingegebne Ausdruck ist syntaktisch falsch.
Sie haben einen Operanden oder Operator nicht angegeben, Sie haben ein ungültiges Zeichen oder Komma eingegeben, oder Sie haben einen Text eingegeben, ohne diesen in Anführungszeichen zu setzen.

Das sagt viel, mir leider gar nichts!!! Ich finde mich nicht zurecht.

Vielen Dank im Voraus für die vielen Tipps.
Danke
mfg
ARuprecht
Mitglied: 76109
25.09.2009 um 19:07 Uhr
Hallo rupi01!

In einer Abfrage werden Argumente mit einem ";" getrennt z.B.:
"Ausdr1: Wenn(x=y;1;2)"

Gruß Dieter
Bitte warten ..
Mitglied: rupi01
29.09.2009 um 14:46 Uhr
Hallo Dieter,

danke für Deinen Tipp. Wenn ic h das mache, erhalte ich folgendes:
"Kompilierungsfehler.in Abfrageausdruck 'GETGEFKMBYTID([tbl1].[Var1];[tbl1].[Var2];[tbl2].[Var3])'

Ich weiss nicht mehr weiter. Zum besseren Verständnis möchte ich die Aufgabe etwas genauer erklären.

Ich habe eine DB von Oracle 10g (XE) nach Access 2K7 migriert. In der Oracle DB gibt es eine View, deren SQL Script so aussieht:
CREATE OR REPLACE VIEW V_TD_GESAMT
(FZGID, BEZ, TYP, KZ, STARTKM,
TINHALT, SPRIT, KAUFDAT, VKDAT, NDAUERPA,
FZGIDNR, FZGKEY01, FZGKEY02, FZGKEY03, AKTIV,
TID, TDATUM, TLITER, GESKM, BETRAG,
PREISJELITER, GEFKM, VERBRAUCH, KOSTEN100KM, THEOREICHW,
TYPID, TYPART, SPAID, SPAART)
AS
SELECT TD_FZGSTAMM."FZGID",
TD_FZGSTAMM."BEZ",
TD_FZGSTAMM."TYP",
TD_FZGSTAMM."KZ",
TD_FZGSTAMM."STARTKM",
TD_FZGSTAMM."TINHALT",
TD_FZGSTAMM."SPRIT",
TD_FZGSTAMM."KAUFDAT",
TD_FZGSTAMM."VKDAT",
TD_FZGSTAMM."NDAUERPA",
TD_FZGSTAMM."FZGIDNR",
TD_FZGSTAMM."FZGKEY01",
TD_FZGSTAMM."FZGKEY02",
TD_FZGSTAMM."FZGKEY03",
TD_FZGSTAMM."AKTIV",
TD_TANKDATEN."TID",
TD_TANKDATEN."TDATUM",
TD_TANKDATEN."TLITER",
TD_TANKDATEN."GESKM",
TD_TANKDATEN."BETRAG",
ROUND(Betrag/TLITER,3) PreisJeLiter,
Getgefkmbytid(TID, geskm, startkm) gefKM,
CASE WHEN Getgefkmbytid(TID, geskm, startkm) <> 0 THEN ROUND(TLITER*100/Getgefkmbytid(TID, geskm, startkm),3) ELSE NULL END verbrauch,
CASE WHEN Getgefkmbytid(TID, geskm, startkm) <> 0 THEN ROUND(TLITER*100/Getgefkmbytid(TID, geskm, startkm) * Betrag/TLITER,3) ELSE NULL END kosten100km,
CASE WHEN Getgefkmbytid(TID, geskm, startkm) <> 0 THEN ROUND(TINHALT/(TLITER/Getgefkmbytid(TID, geskm, startkm)),3) ELSE NULL END theoreichw,
TD_FZGTYP."TYPID", TD_FZGTYP."TYPART",
TD_SPRITART."SPAID", TD_SPRITART."SPAART" FROM TD_FZGSTAMM, TD_TANKDATEN, TD_FZGTYP, TD_SPRITART WHERE TD_FZGSTAMM.fzgid = TD_TANKDATEN.fzgid AND TD_FZGSTAMM.typ = TD_FZGTYP.typid AND TD_FZGSTAMM.sprit = TD_SPRITART.spaid

Die Prozedur GETGEFKMBYTID sieht so aus:
CREATE OR REPLACE FUNCTION Getgefkmbytid(inTid NUMBER, geskm NUMBER , startkm NUMBER) RETURN NUMBER IS
tmpVar NUMBER;

BEGIN
tmpVar := 0;

SELECT MAX(GESKM) INTO tmpVar FROM TD_TANKDATEN WHERE TDATUM < (SELECT TDATUM FROM TD_TANKDATEN a WHERE a.TID = inTid AND a.fzgid = TD_TANKDATEN.fzgid) ORDER BY TDATUM DESC;


SELECT CASE WHEN tmpVar IS NOT NULL THEN geskm-tmpVar ELSE geskm-STARTKM END INTO tmpVar FROM dual;

RETURN tmpVar;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END Getgefkmbytid;

dabei sollen die gefahrenen km nach jedem Tankvorgang berechnet werden in GETGEFKMBYTID.

Und genau das soll in einer Abfrage in Access 2K7 passieren. Da ich überhaupt nicht weiss wie, bin ich momentan nur am rumprobieren, aber eigentlich schon ziemlich weit bis auf diesen Prozedur (Modul) aufruf.
In der 1. Selectanweisung der Prozedur (Oracle) ist das Statement SELECT.......from..........where..<(SELECT.....FROM TD_TANKDATEN a where a.TID = inTID and a.FZGID = TD_TANKDATEN.FZGID) ORDER ......
Hier wird ein und die selbe Tabelle gleichzeitig 2x angesprochen einmal als "a" und einmal mit dem Tabellennamen. Genauso das mit dem "INTO" hier schieße ich den Tabellenwert in eine temporäre Variable. Und das CASE WHEN - Bedingungen innerhalb von SQL.
Wie funktioniert das in A2K7?????? geht das überhaupt?? Ich habe in meinen Büchern nix gefunden!!

Danke an alle Access-Cracks da draußen!
mfg
Andreas
Bitte warten ..
Mitglied: 76109
29.09.2009 um 15:26 Uhr
Hallo rupi01!

Sorry, da habe ich Dich missverstanden

Ich hatte wegen der Bezeichnung "Ausdr1:" fälschlicherweise angenommen, dass es sich um eine Abfrage-Tabelle in Access handelt. In SQL-Abfragen, werden die Argumente natürlich mit Komma getrennt.

'GETGEFKMBYTID([tbl1].[Var1],[tbl1].[Var2],[tbl2].[Var3])'

In SQL bin ich leider nicht so bewandert, aber falls mir zu Deinem Posting doch noch etwas einfällt, gebe ich Dir bescheid.



Gruß Dieter
Bitte warten ..
Mitglied: rupi01
29.09.2009 um 15:50 Uhr
Hallo Dieter,

jetzt dreh' ich mich dann im Kreis . Wenn ich mit Komma trenne laufe ich auf den Fehler vom Ursprungs-Posting!

Wenn Du etwas rauskriegst wäre das toll. Ich suche auch weiter, weiss aber schon nicht mehr wo ich noch suchen soll.

Danke für Deine Hilfe

mfg
Andreas
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell: Parameter einer Funktion soll eine Funktion aufrufen
gelöst Frage von SaschaRDBatch & Shell3 Kommentare

Hallo zusammen, mein Ziel ist es die Zeitdauer einer Prozesses zu ermitteln. Dafür ist die folgende Funktion zuständig:Leider wird ...

Basic
VBA Access Variable an Query Kriteria weitergeben
Frage von EverestBasic1 Kommentar

Hallo Access-Experten, kann jemand mir bitte erklären wie ich eine Variable aus einem Formular (über VBA) an Query Kriterien ...

Microsoft Office
Access - VBA - Anzahl von Unterordnern in Access, DIR funktion liefert falsches Ergebnis
gelöst Frage von thomas1972Microsoft Office2 Kommentare

Hallo, ich versuche aus einem Verzeichnis die Anzahl Unterordner sowie die Anzahl von Dateien auszulesen Leider erkennt dieser sowohl ...

JavaScript
Wie funktioniert der Aufruf für folgende Funktion?
gelöst Frage von PeacerJavaScript4 Kommentare

Hallo Zusammen, habe hier eine HTML Seite und möchte wissen wie folgender Funktionsaufruf funktioniert: Folgende JS Dateien wurden im ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 10 StundenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 17 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 1 TagWindows 104 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 1 TagSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement17 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...