Neuigkeiten:

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

Mobiles Hauptmenü

Problem mit Abfrage ODBC verknüpfte Tabelle mit TempVar

Begonnen von datekk, Juli 18, 2014, 10:26:20

⏪ vorheriges - nächstes ⏩

datekk

Hallo,

ich habe ein Formular, welches Datensätze aus OutlookBCM darstellt über eine verlinkte ODBC / SQL Tabelle. Die Datensätze in dieser Tabelle haben ein Schlüsselfeld Names "EntryGUID" und der Schlüssel sieht wie folgt aus Beispiel: {45167165-D76F-435D-A237-0008CF9151CC}.

Mit Klick z.B. auf den Namen eines Kontakts soll die GUID in eine TempVar gespeichert werden. Diese TempVar soll dann in einer Abfrage als Kriterium genutzt werden. Leider funktioniert dies nicht. Die Abfrage liefert immer gar keine Ergebnisse. Wenn ich allerdings die TempVar in einem Textfeld abrufe, wird die GUID richtig angezeigt - die TempVar ist also richtig belegt.

Warum lässt sich dann die Abfrage nicht danach auflösen?

Wenn ich die GUID als Text in der Abfrage erfasse, wird diese auch richtig ausgeführt und der Datensatz mit der passenden GUID angezeigt... ALLERDINGS ändert sich der Eintrag im Kriterienfeld dann auf {guid {45167165-D76F-435D-A237-0008CF9151CC}}.

Es ist seltsam... Müssen ODBC Abfragen anders aufgebaut werden in Verbindung mit TempVar?

In das Feld Kriterium habe ich ganz normal [TempVar]![GUID] eingefügt.

Kann jemand helfen?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

Hallo,

Tempvar ist eine Variable(n-Deklaration) auf VBA-Seite, eine Where-Condition ein Filterkriterium auf SQL-Ebene. Beide kennen voneinander nicht. Um den Inhalt aus einer Tempvar-Auflistung in eine SQL-Kriterium zu bringen, muss der Variablen-Inhalt mit einer VBA-Public-Funktion "geholt" und die Funktion in der SQL-Where-Condition aufgerufen werden.

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

datekk

Puhhh... Ja genau :) Ich verstehe nur Bahnhof. Bist Du so nett und zeigst mal an einem Beispiel wie man sowas umsetzt?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

Hallo,


in einem Standardmodul:

Public Function getMyTempVar(strVarName)
getMyTempVar = TempVars(strVarName)
End Function



In der Abfrage im Kriterienfeld:

Kriterium:    =getMyTempVar("MeineVartempVariable")
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

datekk

Hallo Franz,

leider funktioniert dies nicht. Meine Abfrage liefert immer noch Null Ergebnisse. Ich habe getMyTempVar("GUID") im Kriterienfeld eingegeben. Der TempVar wird in einem Makro der Name GUID mit dem Wert der Spalte EntryGUID zugewiesen. Die Funktion GetMyTempVar wird auch erkannt.

Was könnte der Fehler sein?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

#5


Hallo,

das geht schon, vermutlich machst Du noch was falsch..

WAS funktioniert denn nicht?



Weise besser der Tempvars-Variablen (oder einer anderen Public-Variablen) doch per VBA den bestimmten Wert zu...

Und warum über den Umweg mit Tempvar?

Vermutlich kannst Du gleich der Funktion das Ausgangs-Feld oder -Variable als Parameter übergeben ...
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

datekk

Da meine VBA Kenntnisse ganz am Anfang stehen nutze ich den Makro Generator.

Was möchte ich:

Aus einer Abfrage stelle ich eine Datentabelle über ein Endlosformular zusammen, vereinfacht mit den Feldern Name, Vorname, EntryGUID. Bei klick auf einen Namen erfolgt per Ereignis "bei Klick" der Aufruf eines Makros in dem der TempVar "GUID" der Wert des Eintrags aus dem Feld "EntryGUID" des angeklickten Datensatzes übergeben wird. Im nächsten Schritt soll eine Anfügeabfrage den geklickten Datensatz an eine andere Tabelle anfügen. Hierzu soll die Abfrage den Datensatz suchen, dessen EntryGUID dem Wert der TempVar entspricht. Die Felder Name und Vorname sollen dann an eine andere Tabelle angefügt werden.

Leider gibt die Anfügeabfrage aber immer Null Datensätze aus.

Meine Kenntnisse sind in VBA noch nicht so top, dass ich das alles mit VBA gestalten kann - daher nutze ich den Makro-Generator.



Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

Hallo,

was ist der eigentliche Hintergrund dieses Unterfangens? (Das hört sich so an, als wolltest Du den angeklickten Datensatz lediglich in eine andere Tabelle kopieren).

Vermutlich liegt Dein DB-Konzept im Argen..
(btw: "Name" als Name für ein Tabellenfeld zu missbrauchen, bringt Kummer und Schmerzen)

als Ereignisprozedur "Beim Klicken" des Formular-Textfeldes ("Name") , das den "Namen" anzeigt:


Sub Name_Click()

Currentdb.Execute "Insert into tblAndereTabelle ([Name],Vorname,EntryGUID) Select [Name],Vorname,EntryGUID from Tabelle1 Where EntryGUID = '" & Me![color=blue]EntryGUID[/color] & "'"
End Sub



EntryGUID  --> Name des Formular-Textfeldes, das diesen Wert anzeigt
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

datekk

#8
Hallo Franz,

das genaue Unterfangen ist, dass ich aus meiner Outlook BCM Datenbank (SQL) Datensätze in meine Access Auftragsverwaltung übernehmen möchte, um die Kunden nicht händisch neu eingeben zu müssen.

Nutze ich Deinen o.g. Code angepasst auf meine Situation erhalte ich die Fehlermeldung: "Laufzeitfehler 3146: ODBC-Aufruf fehlgeschlagen". Hier mein Code:

Private Sub FLCompanyName_Click()

CurrentDb.Execute "Insert into Kundenliste (Anrede,Vorname,Nachname) Select Prefix,FirstName,Lastname from dbo_PublicContactsView Where EntryGUID = '" & Me!GUID & "'"

End Sub

Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

Hallo,

ist "Me!GUID"   (---> "GUID")  der Name des Formular-Textfeldes, das den "entryGUID"-Wert anzeigt?
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

datekk

Ja genau. Es handelt sich aber um ein Endlosformular.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

Hallo,

tja, dann kann ich nur vermuten, dass der ODBC-Treiber mit dem GUID_Wert nichts richtig anfangen kann.

Was passiert, wenn der GUID-Wert als String in die SQL eingebaut wird?
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

datekk

Bitte zeige mir kurz wie es geht. Mein Versuch endete diesmal mit einem Syntaxfehler.

CurrentDb.Execute "Insert into Kundenliste (Anrede,Vorname,Nachname) Select Prefix,FirstName,LastName from dbo_PublicContactsView Where EntryGUID = {45167165-D76F-435D-A237-0008CF9151CC}'"
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

hallo,

CurrentDb.Execute "Insert into Kundenliste (Anrede,Vorname,Nachname) Select Prefix,FirstName,LastName from dbo_PublicContactsView Where EntryGUID = '{45167165-D76F-435D-A237-0008CF9151CC}'"
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

datekk

Das Funktioniert. Der entsprechende Datensatz wird nun an die Kundenliste angefügt....
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps