Migratie van Access query naar SQL query - juiste syntax ?

Status
Niet open voor verdere reacties.
Visualiseren van de (werkende?) 'variabele SQL' op het scherm ? of toch anders ?
Als dit jouw vraag is : hoe zou ik dat eventueel theoretisch kunnen doen ? of bestaan daar codes voor ?
Of zit ik op het verkeerde spoor ?
 
Ik ben totaal niet bekend met ASP maar zoiets zou het moeten zijn om de string op het scherm te krijgen

Code:
<%
Response.Write(sql)
%>

Frank
 
Response.write opgenomen in de code - geen 'afdruk' - lukt niet vermoedelijk door de error in de (hoofd) sql ?
Dit is de (mijn) volledige SQL-code.
Heb hierin (noodgedwongen) de Create view (sql2) uitgeschakeld - want in de DB is de subquery VW_RCdetails18 al aangemaakt en hiernaar wordt (telkens) verwezen met de/een error : 'dat hij reeds bestaat' - aansluitende vraag : hoe 'behandel' ik sql2 om uit gewijzigde tabellen telkens toch met een up-to-date VW_RCdetails18 te kunnen werken ?

Code:
Einddatum=cdate(#2018/06/30#) 
'sql2="CREATE VIEW VW_RCdetails18 AS SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP, ledenid FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP, ledenid FROM tabl_B18"
'rs2.Open sql2, Conn

SQL="SELECT Leden.[Leden-Id], Leden.LedenNr, Leden.Familienaam, Leden.Voornaam, "&_
"Sum(VW_RCdetails18.BUitAKP) AS TBUitAKP, "&_
"Sum(VW_RCdetails18.BInVKP) AS TBInVKP, "&_
"Sum(VW_RCdetails18.BInVKP)-Sum(VW_RCdetails18.BUitAKP) AS SaldoRC, "&_ 
"IIf(Sum(RCdetails18.BInVKP)-Sum(RCdetails18.BUitAKP)>0,0,Sum(RCdetails18.BInVKP)-Sum(RCdetails18.BUitAKP)) AS SaldoDT, "&_
"IIf(Sum(RCdetails18.BInVKP)-Sum(RCdetails18.BUitAKP)<0,0,Sum(RCdetails18.BInVKP)-Sum(RCdetails18.BUitAKP)) AS SaldoCT "&_ 
"FROM Leden  "&_
"INNER JOIN VW_RCdetails18 ON Leden.[Leden-Id]=VW_RCdetails18.ledenid "&_
"WHERE (((VW_RCdetails18.Datum)<="& Einddatum &")) "&_ 
"GROUP BY Leden.[Leden-Id], Leden.LedenNr, Leden.Familienaam, Leden.Voornaam "&_
"ORDER BY Leden.LedenNr"
 
rs.Open sql, Conn
response.write (sql)

Ook na uitschakeling van sql2 geeft de (hoofd) sql nog steeds dezelfde error:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.

Dank voor tips.
 
Laatst bewerkt:
Ik zou deze even omdraaien

Code:
rs.Open sql, Conn
response.write (sql)

naar

Code:
response.write (sql)
rs.Open sql, Conn

of gewoon even zo :

Code:
response.write (sql)


Anders stopt het inderdaad bij de error.

Edit: Als de view in Acces bestaat hoef je die create niet meer de executen trouwens. Create is ip eenmalig.

Frank
 
Laatst bewerkt:
Plaatswissel geeft de bedoelde 'echo'.

SELECT Leden.[Leden-Id], Leden.LedenNr, Leden.Familienaam, Leden.Voornaam, Sum(VW_RCdetails18.BUitAKP) AS TBUitAKP, Sum(VW_RCdetails18.BInVKP) AS TBInVKP, Sum(VW_RCdetails18.BInVKP)-Sum(VW_RCdetails18.BUitAKP) AS SaldoRC, IIf(Sum(RCdetails18.BInVKP)-Sum(RCdetails18.BUitAKP)>0,0,Sum(RCdetails18.BInVKP)-Sum(RCdetails18.BUitAKP)) AS SaldoDT, IIf(Sum(RCdetails18.BInVKP)-Sum(RCdetails18.BUitAKP)<0,0,Sum(RCdetails18.BInVKP)-Sum(RCdetails18.BUitAKP)) AS SaldoCT FROM Leden INNER JOIN VW_RCdetails18 ON Leden.[Leden-Id]=VW_RCdetails18.ledenid WHERE (((VW_RCdetails18.Datum)<=30/06/2018)) GROUP BY Leden.[Leden-Id], Leden.LedenNr, Leden.Familienaam, Leden.Voornaam ORDER BY Leden.LedenNr

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.
 
Als je deze rechtstreeks in Acces in een query plakt en laat uitvoeren, krijg je dan meer informatie ?

Frank
 
## komen niet mee naar de SQL

Deze moet je denk ik of aan je variabele of aan de SQL toevoegen.
Beetje afhankelijk of je variabele een string of een waarde geeft.

Code:
Variabele = "string" --> Toevoegen kan bij beide
Variabele = waarde --> Toevoegen aan SQL

Frank
 
Na een pauze wegens andere prioriteiten, query weer opgenomen en o.a. na correctie van typo's is hij bruikbaar zonder errors.
Toch nog dit probleem bij de selectie van 'details'.
VW_RCdetails18.xyz voegt de tabellen A18 en B18 samen met 'union'. Deze tabellen bevatten elk velden als datum, aantal, omschrijving …
Als ik de passende velden (bijvoorbeeld de datum) uit de tabel A18 en/of B18 probeer te displayen met commando <%=rs("VW_RCdetails18.Datum")%> dan krijg ik volgende error :Item cannot be found in the collection corresponding to the requested name or ordinal.
Ik dacht dat de verwijzing naar de subquery VW_RCdetails18 zou volstaan om de passende records/velden uit de passende tabel(len) te bekomen.
Of zie ik iets essentieels over het hoofd ?

Geprobeerd om het probleem te verhelpen door de velden Datum, Aantal, Omschrijving, … van VW_RCdetails18 in de eerste (bovenste) SELECT-regel toe te voegen.
Krijg dan evenwel volgende error : Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Cannot group on fields selected with '*' (VW_RCDetails18).

Graag een tip om de velden van de subquery VW_RCDetails18 correct te 'selecteren' en alzo de aangehaalde error (Item cannot be found in the collection corresponding to the requested name or ordinal.) te vermijden.
 
Laatst bewerkt:
...
Mijn conversie
Code:
sql = "SELECT Leden.[Leden-Id], Leden.LedenNr, Leden.Familienaam, Leden.Voornaam, "&_ 
"SUM((SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).BUitAKP) AS TBUitAKP, "&_
"SUM((SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).BInVKP) AS TBInVKP, "&_
"Sum((SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).BInVKP) "&_
"-SUM(SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).BUitAKP) AS SaldoRC, "&_ 

"CASE WHEN SUM(SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).[BInVKP]"&_
"-SUM(SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).[BUitAKP]>0 THEN 0 "&_
"ELSE SUM(SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).[BInVKP]"&_
"-SUM(SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).[BUitAKP]) AS SaldoDT, "&_

"CASE WHEN SUM(SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).[BInVKP]"&_
"-SUM(SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).[BUitAKP]<0 THEN 0 "&_
"ELSE SUM(SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).[BInVKP]"&_
"-SUM(SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).[BUitAKP]) AS SaldoCT "&_

"FROM Leden "&_
"INNER JOIN (SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18) "&_
"ON Leden.[Leden-Id]=(SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).ledenid "&_
"WHERE (((SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_A18 UNION ALL SELECT Datum, Aantal, Omschrijving, BInVKP, BUitAKP FROM tabl_B18).Datum)<=[datum?])) "&_
"GROUP BY Leden.[Leden-Id], Leden.LedenNr, Leden.Familienaam, Leden.Voornaam "&_
"ORDER BY Leden.LedenNr"
...
Als ik dat zie gaat mijn haar toch recht staan (als dat de kwaliteiten zijn van de nieuwe generatie?!?)
Eerste en vooral zou ik toch even wat naslagwerk lezen en eens zoeken op views en als dit niet lukt bij access ga je migreren naar database systemen die dit wel kunnen .

Ik blijft verwondert dat er zo veel mensen blijven knoeien in access (ik zie veel stukken terug keren in je query dus het MOET eenvoudiger kunnen)(kan je de tijd dat de query loop ook er eens bij plaatsen)
 
Dank voor reactie kenikavanbis.
Stel dat ik ook enige tips of aanwijzingen kon lezen over hoe het beter zou kunnen, ware dat heel aangenaam en is het overigens ook passend in het opzet van dit forum.

Voor de duidelijkheid : ik zoek de mogelijkheid om de (aangehaalde werkende) Access query om te bouwen tot een SQL query om een webpagina te sturen. Met de hulp van bovenstaande correspondenten ben ik tot een 'prototype' gekomen (cfr. bericht #23).
Op dit ogenblik -cfr. mijn laatste bericht #28) ontbreekt nog de (essentiële) mogelijkheid om de records uit het Union-gedeelte UNION zonder error te produceren. Ik vind evenwel niet onmiddellijk enige literatuur hoe ik deze gegevens ook kan genereren in een webpagina.

Een tip hiervoor, maar ook eventuele tips voor de gesuggereerde verdere vereenvoudigingen, zijn bijgevolg zeer welkom.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan