webForumDet fria alternativet

SQL sats & datum frågor

5 svar · 176 visningar · startad av His Divine Shadow

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#1

Jag har ett problem, i en SQL sats som tar fram priser beroende på kundens inställningar, han kan ha fått special pris enligt en annan prislista, satsen fungerar bra nu men, det är en sak, i vissa kunders fall så gäller specialpriserna bara mellan eller efter ett datum, ibland står det inget i datumfälten(fromdatum, todatum) vilket betyder att special priset gäller hela tiden.
Här är en bit av koden:

Do While Not RS_Prod.EOF
ordpris = Empty
pris = RS_Prod("aPris")

SQL= "SELECT Kundpris.KundNr, KundPris.ArtikelNr, Art.Artikelnr, KundPris.aPris FROM Art, ArtPris, Kund, Kundpris " &_
"WHERE ('" & Session("user") & "'= kundpris.KundNr) AND " &_
"(Art.ArtikelNr = KundPris.ArtikelNr) AND " &_
"(Art.ArtikelNr = ArtPris.ArtikelNr) AND " &_
"(Art.ArtikelNr = '" & RS_Prod("ArtikelNr") &_
"') AND (Art.Extra_7 LIKE 'J') ORDER BY Art.Extra_9 "
Set RS_slist = Conn.Execute(SQL)

if NOT RS_slist.EOF Then
pris = RS_slist("aPris")
else
' If different price lists are used for different customers
SQL= "SELECT Art.Extra_8, Art.Benämning_10, Art.Övrigt, Art.Artikelnr, ArtPris.aPris FROM Art, ArtPris " &_
"WHERE (Art.ArtikelNr = ArtPris.ArtikelNr) AND " &_
"(Art.ArtikelNr = '" & RS_Prod("ArtikelNr") &_
"') AND (Art.Extra_7 LIKE 'J') AND " &_
"(ArtPris.PrisLista = " & prislista & ") ORDER BY Art.Extra_9"
Set RS_plist = Conn.Execute(SQL)

if NOT RS_plist.EOF Then
pris = RS_plist("aPris")
else
' If special offer (can not be used together with price lists)
SQL= "SELECT Art.aPris AS pris1, ArtPris.aPris AS pris2, KundPris.aPris AS pris3 FROM KundPris, Art, ArtPris " &_
"WHERE Art.ArtikelNr = ArtPris.Artikelnr AND " &_
"(Art.ArtikelNr = '" & RS_Prod("ArtikelNr") &_
"') AND (Art.Extra_7 LIKE 'J') AND " &_
"(ArtPris.PrisLista = 1) ORDER BY Art.Extra_9"
Set RS_offer = Conn.Execute(SQL)
if NOT RS_offer.EOF then

ordpris = RS_offer("pris1")
pris = RS_offer("pris2")
specialpris = RS_offer("pris3")
end if
end if
end if

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Fromdatum och todatum finns alltså i kundpristabellen?

SQL= "SELECT Kundpris.KundNr, KundPris.ArtikelNr, Art.Artikelnr, KundPris.aPris FROM Art, ArtPris, Kund, Kundpris " &_
"WHERE ('" & Session("user") & "'= kundpris.KundNr) AND " &_
"(Art.ArtikelNr = KundPris.ArtikelNr) AND " &_
"(Art.ArtikelNr = ArtPris.ArtikelNr) AND " &_
"(Art.ArtikelNr = '" & RS_Prod("ArtikelNr") &_
"') AND (Art.Extra_7 LIKE 'J')" & _
" AND ((FROMDATUM is NULL and TODATUM is NULL )" & _
" or (FROMDATUM is null and TODATUM > date )" & _
" or (FROMDATUM < date and TODATUM is null)" & _
" or date between FROMDATUM and TODATUM)" & _
" ORDER BY Art.Extra_9 "

------------------
essentitia preter non sans multiplicandum

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#3

Jo men när jag prövade din kod fick jag detta:

Microsoft JET Database Engine error '80004005'
The specified field 'FROMDAG' could refer to more than one table listed in the FROM clause of your SQL statement.

/main/swe/order.asp, line 84

Ja och fälterna hette visst FromDag och TomDag, men det fixar man nu enkelt.

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.

[Redigerat av His Divine Shadow den 09 aug 2001]

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Det verkar alltså som det finns kolumner med samma namn i en annan tabell som också ingår i frågan. Då får man kvalificera kolummreferenserna


SQL= "SELECT Kundpris.KundNr, KundPris.ArtikelNr, Art.Artikelnr, KundPris.aPris FROM Art, ArtPris, Kund, Kundpris " &_
"WHERE ('" & Session("user") & "'= kundpris.KundNr) AND " &_
"(Art.ArtikelNr = KundPris.ArtikelNr) AND " &_
"(Art.ArtikelNr = ArtPris.ArtikelNr) AND " &_
"(Art.ArtikelNr = '" & RS_Prod("ArtikelNr") &_
"') AND (Art.Extra_7 LIKE 'J')" & _
" AND ((kundpris.FROMDAg is NULL and kundpris.TODAG is NULL )" & _
" or (kundpris.FROMDAG is null and KUNDPRIS.TODAG > date )" & _
" or (KUNDPRIS.FROMDAG < date and KUNDPRIS.TODAG is null)" & _
" or date between KUNDPRIS.FROMDAG and KUNDPRIS.TODAG)" & _
" ORDER BY Art.Extra_9 "

------------------
essentitia preter non sans multiplicandum

His Divine ShadowMedlem sedan sep. 20004 079 inlägg
#5

Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.

/main/swe/order.asp, line 84

Försöker hitta problemet but no luck so far.

------------------
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning.

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Det felet brukar uppstå om man har angett ett felaktigt kolumnnamn.

------------------
essentitia preter non sans multiplicandum

139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)