Avatar billede HenrikNielsen06 Nybegynder
22. januar 2013 - 12:35 Der er 10 kommentarer og
1 løsning

Forespørgelse i Access gennem ODBC til Excel giver intet resultat

Håber at der er nogen som kan hjælpe mig.

Har en forespørgelse i Access - som giver et resultat via Access når forespørgelsen køres direkte i Access.

Hvis jeg derimod connecter via ODBC og benytter Excel (den indbygget access funktionalitet i Excel) til at henter data er resultatet tomt?

Hvad gør jeg forkert eller er der nogle settings som jeg ikke har fået afkrydset?
Avatar billede jensen363 Forsker
22. januar 2013 - 12:59 #1
Hvordan ser din forespørgsel ud i Access / SQL ???
Avatar billede HenrikNielsen06 Nybegynder
22. januar 2013 - 17:14 #2
Hej Jensen
min SQL er nedenstående, ligeledes har jeg vedlagt OLEDB connectionen.

SQL:
-------------
SELECT tblSLA_Report.Niids_number, tblSLA_Report.Niids_name, tblSLA_Report.Bookkeping_Date, tblSLA_Report.Service_component_name, tblSLA_Report.Actual_Mth_Cost
FROM (tblSLA_Report LEFT JOIN tblNiids ON tblSLA_Report.Niids_number = tblNiids.NIIDSNo) LEFT JOIN tblOrganisation ON tblNiids.AAU = tblOrganisation.AAU
WHERE (((tblSLA_Report.Niids_number)<>" ") AND ((tblSLA_Report.Bookkeping_Date)>#12/1/2012#) AND ((tblSLA_Report.TransActType) Like "Transaction*") AND ((tblOrganisation.lev4_name)="IT Capital Markets") AND ((tblNiids.Flag)="i") AND ((CDbl(CVar(Right([SC_id],3))))<950)) OR (((tblSLA_Report.Niids_number)<>" ") AND ((tblSLA_Report.Bookkeping_Date)>#12/1/2012#) AND ((tblSLA_Report.TransActType) Like "Transaction*") AND ((tblNiids.Flag)="i") AND ((tblSLA_Report.Grp_id_2)="Other"))
ORDER BY tblSLA_Report.Niids_number, tblSLA_Report.Bookkeping_Date;
--------------

OLEDB-connection:
---------
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=H:\MyData\# IT Capital Markets\Invoice Database IT Capital Markets.accdb;Mode=Share Deny Write;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False
--------------
Avatar billede HenrikNielsen06 Nybegynder
22. januar 2013 - 17:15 #3
Hej Jensen
min SQL er nedenstående, ligeledes har jeg vedlagt OLEDB connectionen.

SQL:
-------------
SELECT tblSLA_Report.Niids_number, tblSLA_Report.Niids_name, tblSLA_Report.Bookkeping_Date, tblSLA_Report.Service_component_name, tblSLA_Report.Actual_Mth_Cost
FROM (tblSLA_Report LEFT JOIN tblNiids ON tblSLA_Report.Niids_number = tblNiids.NIIDSNo) LEFT JOIN tblOrganisation ON tblNiids.AAU = tblOrganisation.AAU
WHERE (((tblSLA_Report.Niids_number)<>" ") AND ((tblSLA_Report.Bookkeping_Date)>#12/1/2012#) AND ((tblSLA_Report.TransActType) Like "Transaction*") AND ((tblOrganisation.lev4_name)="IT Capital Markets") AND ((tblNiids.Flag)="i") AND ((CDbl(CVar(Right([SC_id],3))))<950)) OR (((tblSLA_Report.Niids_number)<>" ") AND ((tblSLA_Report.Bookkeping_Date)>#12/1/2012#) AND ((tblSLA_Report.TransActType) Like "Transaction*") AND ((tblNiids.Flag)="i") AND ((tblSLA_Report.Grp_id_2)="Other"))
ORDER BY tblSLA_Report.Niids_number, tblSLA_Report.Bookkeping_Date;
--------------

OLEDB-connection:
---------
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=H:\MyData\# IT Capital Markets\Invoice Database IT Capital Markets.accdb;Mode=Share Deny Write;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False
----------------
Avatar billede Slettet bruger
22. januar 2013 - 21:09 #4
Måske virker funktioner som CVar og CDbl ikke over ODBC. Er det muligt at se fejlmeddelelser ved tilgang fra Excel? - med andre ord - hvis du tester med en bevidst fejl - får du da en fejlmeddelelse fra "excel" ?
Avatar billede HenrikNielsen06 Nybegynder
22. januar 2013 - 21:27 #5
Nej jeg får ingen fejlmeddelse i Excel - bare ingen data
Avatar billede HenrikNielsen06 Nybegynder
22. januar 2013 - 21:27 #6
Nej jeg får ingen fejl meddelse
Avatar billede Slettet bruger
22. januar 2013 - 21:36 #7
Hvis SC_id alene indeholder tal kan
  ((CDbl(CVar(Right([SC_id],3))))<950)
erstattes af
  ((SC_id mod 1000)<950)
Avatar billede HenrikNielsen06 Nybegynder
23. januar 2013 - 05:36 #8
SD_id er en tekst string - desværre
Avatar billede jensen363 Forsker
23. januar 2013 - 09:07 #9
Problemet kan ligge i at du benytter "nestede forespørgsler" ... altså en forespørgsel som er afhængig af andre forespørgsler
Avatar billede HenrikNielsen06 Nybegynder
23. januar 2013 - 09:17 #10
Hej Jensen
No... det gør jeg ikke (har ikke forspørgelse på forespørgles)...

Men Men fandt selv løsningen på problemet (har ikke set om Microsoft har en bug på dette). Udfordringen var at jeg benyttede funktionen "Like 'xxxx*'" hvilket Excel ikke kunne lide hvorfor jeg løste det ved at refere direkte altså "='xxxx'"

Ellers tak for indsatsen :-)
Avatar billede HenrikNielsen06 Nybegynder
06. februar 2013 - 08:55 #11
Er nu løst
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester