Avatar billede kristian21 Praktikant
09. maj 2011 - 10:51 Der er 3 kommentarer og
1 løsning

Sql udtræk laver fejl.

Jeg har en access db med en række varelinjer.

Den skal vise et udtræk med:

Varenummer  Sum(uden fragt)  Fragt
10100        79                49
etc.

Jeg har fået konstrueret følgende sql sætning, men den laver en fejl:

strSQL = "SELECT OrderID,OrderNumber,OrderProductNumber,OrderBuyerName,OrderBuyerPhone,SUM(OrderProductPriceSum) AS sum FROM viewOrderProduct where OrderNumber >= 101400 And OrderProductNumber <> 'FREIGHT-00' GROUP BY OrderID,SUM(OrderProductPriceSum) AS sumfreight FROM viewOrderProduct  WHERE OrderNumber >= 101400 And OrderProductNumber = 'FREIGHT-00' GROUP BY OrderID,OrderNumber,OrderBuyerName,OrderBuyerPhone"

Den laver følgende fejl:
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "SUM(OrderProductPriceSum) AS sumfreight FROM viewOrderProduct WHERE OrderNumber >= 101400 And OrderProductNumber = 'FREIGHT-00' GROUP BY OrderID".

sigma_export/export1.asp, linje 23

Nogle der kan hjælpe?
09. maj 2011 - 10:59 #1
Du synes at have denne del duplikeret i din forespoergsel:

GROUP BY OrderID,
SUM(OrderProductPriceSum) AS sumfreight FROM viewOrderProduct  WHERE OrderNumber >= 101400 And OrderProductNumber = 'FREIGHT-00'

Proev om det virker med denne forkortede forespoergsel:

strSQL = "SELECT orderID, OrderNumber, OrderProductNumber, OrderBuyerName, OrderBuyerPhone, SUM(OrderProductPriceSum) AS sum
FROM viewOrderProduct where OrderNumber >= 101400 And OrderProductNumber <> 'FREIGHT-00'
GROUP BY OrderID,OrderNumber,OrderBuyerName,OrderBuyerPhone"
Avatar billede kristian21 Praktikant
09. maj 2011 - 11:01 #2
Hej Christian - tak for hurtigt svar.

Det er fordi den ene skal den udtrække hvor OrderProductNumber er forskellig fra 'freight-00' og den anden hvor OrderProductNumber er = 'freight-00'

Giver det mening?
09. maj 2011 - 11:47 #3
I hvert fald giver det ikke mening for din software.  Derfor giver den fejlmelding.

Men jeg er i faerd med at kikke paa det igen.  Jeg tror et af problemerne er den maade du strukturere dine data paa ved at placere oplysninger om kunder, om ordrer, og om produkter altsammen indenfor en enkelt tabel viewOrderProduct. 

Den normale fremgangsmaade ville vaere at skille kundeoplysningerne ud i en saerskilt tabel med en raekke for hver kunde med id, navn, telefon (og maaske adresse, email, o.s.v.)  Naar saa en kunde placerer en ordre behoever du i viewOrderProduct kun at referer til kundens id, ikke navn eller telefonnummer.  (Som det er nu, hvis kunde 'Madsen' i tidens loeb placerer syv orderer, hver med fem produkter, saa vil du i viewOrderProduct 35 gange skrive at Madsen har telefon 02 12 13 14.)  Ligeledes boer du ogsaa have en saerskilt tabel for ordrer med ordernummer, kundeid, og maaske orderdate og lignende, og en saerskilt tabel for de beordrede produkter med ordernummer, produktnummer, pris, o.s.v. 

Har du mulighed for og vil du vaere med til at omstrukturere dine data?  I saafald vil det vaere simpelt at faa trukket alle oplysninger ud du har brug for, saasom det du viser i dit oprindelige spoergsmaal.  Hvis du svarer bekraeftende, saa vil jeg stille et par spoergsmaal mere saasom om fragten afhaenger af det enkelte produkt eller af den enkelte ordre (jeg ville tro det sidste.)
Avatar billede kristian21 Praktikant
11. maj 2011 - 10:42 #4
Hej Christian,
Jeg fik en programmør til at lave en løsning for mig, som virker uden at skulle ændre databasen.

Du får pointene som tak for hjælpen med løsningen.

Hilsen Kristian
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
Kurser inden for grundlæggende programmering

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