Just nu i M3-nätverket
Jump to content

Felaktig Select sats?


dkz

Recommended Posts

Någon som kan hjälpa mig med denna selectsats, historiken finns i en annan tråd:

//eforum.idg.se/viewmsg.asp?EntriesId=319846

 

SELECT Count(ohd.rowcreateddt) AS antal FROM (ohd INNER JOIN ord ON ohd.extordernr = ord.extordernr) LEFT JOIN ar ON ord.artnr = ar.artnr WHERE (((ohd.vref) Like '*NOL*') AND ((ohd.extordsta)=0) AND ((ar.varugruppkod)='UNIT')) HAVING (((Count(ohd.rowcreateddt)) > #14/08/02 13:40:44#));

 

Men denna select sats genererar bara följande fel.

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

 

[Microsoft][ODBC SQL Server Driver]

Line 1: Incorrect syntax near '13'. 

 

/prod/orderin/omsp1/test.asp, line 10

 

Några idéer?

Link to comment
Share on other sites

om det är en SQL Server du använder, testa att köra SQL-satsen direkt i Query Analyser.

 

Don't Underestimate The Power Of Esuk ...

 

Link to comment
Share on other sites

Magnus Gladh

SQL Server tycker inte om ## runt datum, det är access som vill ha det så.

 

SQL server vill ha '' runt datum.

 

Count(ohd.rowcreateddt)) > '14/08/02 13:40:44'));

 

Är det så att det är dagens datum du efterfråga så kan du använda GetDate()

 

Count(ohd.rowcreateddt)) > GETDATE()));

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Link to comment
Share on other sites

Tack, kom nog en liten bit på väg :)

Men det vill sig inte riktigt fullt ut?!?!

 

Select satsen i .asp ser ut såhär:

SQL2 = "SELECT Count(ohd.rowcreateddt) AS antal FROM (ohd INNER JOIN ord ON ohd.extordernr = ord.extordernr) LEFT JOIN ar ON ord.artnr = ar.artnr WHERE (((ohd.vref) Like '*" & Request.QueryString("AVD") & "*') AND ((ohd.extordsta)=0) AND ((ar.varugruppkod)='UNIT')) HAVING (((Count(ohd.rowcreateddt)) > '" & DateAdd("n",-5,now()) & "'));"

 

Generar följande Select sats:

SELECT Count(ohd.rowcreateddt) AS antal FROM (ohd INNER JOIN ord ON ohd.extordernr = ord.extordernr) LEFT JOIN ar ON ord.artnr = ar.artnr WHERE (((ohd.vref) Like '*TEST*') AND ((ohd.extordsta)=0) AND ((ar.varugruppkod)='UNIT')) HAVING (((Count(ohd.rowcreateddt)) > '19/08/02 09:06:19'));

 

Blir felet nedan:

19/08/02 09:06:19

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

 

[Microsoft][ODBC SQL Server Driver]

Syntax error converting the varchar value '19/08/02 09:06:19' to a column of data type int. 

 

/prod/orderin/omsp1/default.asp, line 13

 

--------------------------

Line13 = Set rsData2=dbCon.execute(SQL2)

 

 

Någon som han en fundering på varför det inte blir rätt?

 

 

[inlägget ändrat 2002-08-19 09:19:43 av Krelle]

Link to comment
Share on other sites

Använd % som wildcard i like. Varför har du having? Jag vet inte vad du vill men du försökte jämföra värdet av count med ett datum. Något så här kanske

 

 

SELECT Count(ohd.rowcreateddt) AS antal FROM ohd INNER JOIN ord

ON ohd.extordernr = ord.extordernr

LEFT JOIN ar ON ord.artnr = ar.artnr WHERE ohd.vref Like '%TEST%'

AND ohd.extordsta=0

AND ar.varugruppkod ='UNIT'

and ohd.rowcreateddt > '19/08/02 09:06:19'

 

 

 

Link to comment
Share on other sites

Jag får gråa hår av detta, men jag lär mig mycket av det ;)

 

Tack för inlägget, ännu en bit närmre målet!

 

När jag använde mig av nedan rekomenderad kod:

SELECT Count(ohd.rowcreateddt) AS antal FROM ohd INNER JOIN ord ON ohd.extordernr = ord.extordernr LEFT JOIN ar ON ord.artnr = ar.artnr WHERE ohd.vref Like '%%' AND ohd.extordsta=0 AND ar.varugruppkod = 'UNIT' and ohd.rowcreateddt > '19/08/02 10:39:58';

 

 

Genererades följande fel i MSIE:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

 

[Microsoft][ODBC SQL Server Driver]

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. 

 

/prod/orderin/omsp1/default.asp, line 11

 

Vad gör jag för fel?

 

Link to comment
Share on other sites

Magnus Gladh

Verkar jobbigt!!

 

Testa att öppna EM. oCh gå till din databas välj views och sedan ny. Klistra din kod där och se om den får spel.

 

Om den får det testa att skapa om din kod där, så brukar jag göra. Är lättare då jag aldrig orkat lära mig alla JOINS till höger och vänster. :)

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Link to comment
Share on other sites

Jobbigt är bara förnamnet ;)

 

Tack för tipset, men jag har inte tillgång till EM här och jag är inte så värst duktig på SQL, så jag sitter för tillfället fast.

 

Några andra förslag/gissningar på vad det kan vara som är fel?

Jag tror det är något med datumformateringen, men jag har nog fel där också....

 

 

 

Link to comment
Share on other sites

Har nog hittat felet nu, skulle vilja att min selectsats ger datumformatet 2002-08-19 14:13:29 istället för 19/08/02 14:13:29

 

I selectsatsen använder jag mig av: FormatDateTime(DateAdd("n",-5,Now()))

 

Men när jag skriver samma kod utanför selectsatsen genererar den 2002-08-19 14:13:29

 

Hur ska jag bära mig åt?

 

 

 

Link to comment
Share on other sites

Magnus Gladh

hmmm

 

har du session.lcid = 1053 på din sidan innan FormatDateTime för det skall ge svensktid även om du förändrar formatet...

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Link to comment
Share on other sites

Jag använder mig av session.lcid=1053 överst på sidan. Så tex. <%=Now()%> Genererar formatet 2002-08-20 06:04:45

 

Men det är bara i SQL-satsen som datumformatet blir 20/08/02 06:04:45

 

Detta tycker jag är mycket konstigt, kan det ha något och göra med de lokala settings eller ODBC kopplingen, eller rent av en inställning på SQL-servern (som jag inte har full tillgång till)?

 

 

 

Link to comment
Share on other sites

Magnus Gladh

Verkar skumt...

 

Hur skriver du din SQL sats..

 

sSQL = ".... FormatDateTime(DateAdd("n",-5,Now()))"

 

eller

 

sSQL = "..." & FormatDateTime(DateAdd("n",-5,Now()))

 

Skillnaden mellan den översta och understa är att den översta körs i Drivrutinen medans den understa körs på ASP sidan.

 

Om du då har en engelsk drivrutin så kan du få problem.

 

om nu är så att du kör den understa och ändå får engleskformat "i" SQL satsen men svenskt utan för så lägg datumet i en variabel först och sedan kör in den i SQL Satsen..

 

dDate = FormatDateTime(DateAdd("n",-5,Now()))

sSQL = "...." & dDate

 

Då skall du få svenskdatumformat om du har session.lcid = 1053

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Link to comment
Share on other sites

Sorry för dubbelpostningen :o

 

Jag skriver satsen: sSQL = "..." & FormatDateTime(DateAdd("n",-5,Now()))

 

Tack för all hjälp, men jag löste det med följande sats:

SQL2 = "SELECT Count(ohd.rowcreateddt) AS antal FROM ohd INNER JOIN ord ON ohd.extordernr = ord.extordernr LEFT JOIN ar ON ord.artnr = ar.artnr WHERE ohd.vref Like '%" & Request.QueryString("AVD") & "%' AND ohd.extordsta=0 AND ar.varugruppkod = 'UNIT' and ohd.rowcreateddt > DATEADD(MINUTE, -5,GETDATE());"

 

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...