23. august 2004 - 11:13
Der er
41 kommentarer og 1 løsning
Ret besværligt udtræk
Hej. Jeg er havnet i den igen.. Jeg skal lave følgende udtræk... 4 tekstfelter : grp1, grp2, kon1, kon2 Udtræk alt hvor feltet "gruppe" i Access database ligger mellem grp1 og grp2 .. OG hvor "konto" i Access db ligger mellem kon1 og kon2. Er i med ?
Annonceindlæg fra Thales
23. august 2004 - 11:28
#1
nej
23. august 2004 - 11:29
#2
har du en gruppe med id 1 og 2
23. august 2004 - 11:30
#3
Hehe... okay... Altså... find * fra elev hvor gruppe er større eller lig med grp1 og mindre eller lig med grp2 og konto er større eller lig med kon1 og mindre eller lig med kon2
23. august 2004 - 11:34
#4
HUH? Er ikke med på gruppe med id 1 og 2 ?
23. august 2004 - 11:36
#5
SELECT kon1, kon2 FROM dintabel WHERE ditgruppefelt = grp1, grp2
23. august 2004 - 11:40
#6
Tror ikke vi er helt på samme side... Skal vel bare have den korrekte måde at skrive dét her på: select * from elev where gruppe >= grp1 and gruppe <= grp2 and konto >= kon1 and konto <= kon2 Med ? :)
23. august 2004 - 11:55
#7
hvad er der i tabellerne kon2/1 og grp1/2
23. august 2004 - 11:57
#8
konto og gruppe er de eneste tabeller i db'en... kon1 kon2 grp1 og grp2 er navnene på tekstfelter...
23. august 2004 - 12:01
#9
okay. så skal den hente grp 1/2 hvor kon1 og kon2 passer
23. august 2004 - 12:04
#10
Nej... okay... forfra... Altså i det jeg skrev var gruppe og konto de eneste som var tabeller i min db. Der er flere tabeller. Man udfylder grp1 og grp2 .. og kon1 og kon2 tekstfelterne... de info sendes videre til forespørgslen her... Så er det så at, konto skal være imellem kon1 og kon2 .. og gruppe skal være mellem grp1 og grp2... Giver det mening ?
23. august 2004 - 12:06
#11
ja okay
23. august 2004 - 12:12
#12
jeg vil sige at den skulle se sådanne ud: "SELECT * FROM elev WHERE gruppe <= "&("kon1")& "' AND dato "&("kon2")& "'")
23. august 2004 - 12:14
#13
"SELECT * FROM elev WHERE gruppe <= "&("kon1")& "' AND gruppe >= "&("kon2")& "'")
23. august 2004 - 12:16
#14
Tror ikke du helt er med :) Det her er altså den bedste måde jeg kan forklare det på... select * from elev where gruppe >= grp1 and gruppe <= grp2 and konto >= kon1 and konto <= kon2 Se om gruppe ligger mellem grp1 og grp2 og se om konto ligger mellem kon1 og kon2
23. august 2004 - 12:16
#15
eksempel: SELECT * FROM elev WHERE (gruppe BETWEEN 10 AND 500) AND (konto BETWEEN 40 AND 600 ) asp: sqlQuery = "SELECT * FROM elev " &_ "WHERE (gruppe BETWEEN " & grp1 & " AND " & grp2 & ") "&_ "AND (konto BETWEEN " & kon1 & " AND " & kon2 & " )"
23. august 2004 - 12:17
#16
"SELECT * FROM elev WHERE gruppe <= '"&("kon1")& "' AND gruppe <= '"&("kon2")& "'")
23. august 2004 - 12:17
#17
Yellow... ser rigtigt ud... jeg prøver det lige
23. august 2004 - 12:43
#18
Resultat : Microsoft JET Database Engine error '80040e14' Syntax error (missing operator) in query expression '(gruppe BETWEEN AND ) AND (konto BETWEEN AND )'. /mc-e/searchperiod.asp, line 14 Kode : <!--#include file="connect.asp"--> <% Set data = Server.CreateObject ("ADODB.Recordset") data.Open "SELECT * FROM elev " &_ "WHERE (gruppe BETWEEN " & grp1 & " AND " & grp2 & ") "&_ "AND (konto BETWEEN " & kon1 & " AND " & kon2 & " )", MyConn %>
23. august 2004 - 12:59
#19
Anything ? Både gruppe og konto er tekst format... ikke tal.
23. august 2004 - 13:03
#20
du har taget asp eksemplet fra mit første indlæg? Dine variabler grp1, grp2, kon1 og kon2 indeholder jo ingenting...der er ikke blevet sat noget ind i SQL strengen... Har du dem fra en submittet form? Så skal du nok skrive "WHERE (gruppe BETWEEN " & Request.Form("grp1")...osv...altså med request.form på alle variablerne.
23. august 2004 - 13:08
#21
Det' klart... Nu giver den: Microsoft JET Database Engine error '80040e10' Der er ikke angivet nogen værdi for en eller flere krævede parametre. /mc-e/searchperiod.asp, line 14
23. august 2004 - 13:10
#22
... og koden: <!--#include file="connect.asp"--> <% Set data = Server.CreateObject ("ADODB.Recordset") data.Open "SELECT * FROM elev " &_ "WHERE (gruppe BETWEEN " & Request.Form("grp1") & " AND " & Request.Form("grp2") & ") "&_ "AND (konto BETWEEN " & Request.Form("kon1") & " AND " & Request.Form("kon2") & " )", MyConn %>
23. august 2004 - 13:10
#23
prøv at udskrive din sql query streng lige inden du kører den, og så copy/paste den herind. Altså: sqlQuery = "SELECT * FROM elev " &_ "WHERE (gruppe BETWEEN " & grp1 & " AND " & grp2 & ") "&_ "AND (konto BETWEEN " & kon1 & " AND " & kon2 & " )" response.write sqlQuery data.Open sqlQuery, MyConn
23. august 2004 - 13:15
#24
? Her er starten på mit dokument... Hvad skal udskiftes siger du ? <% select case session("logstat") case "1" tmpvar = "bruger" case "2" tmpvar = "admin" case else response.redirect "login.asp?r="&server.urlencode(request.servervariables("script_name")&"?"&request.querystring) End select %> <!--#include file="connect.asp"--> <% Set data = Server.CreateObject ("ADODB.Recordset") data.Open "SELECT * FROM elev " &_ "WHERE (gruppe BETWEEN " & Request.Form("grp1") & " AND " & Request.Form("grp2") & ") "&_ "AND (konto BETWEEN " & Request.Form("kon1") & " AND " & Request.Form("kon2") & " )", MyConn %> <html>
23. august 2004 - 13:19
#25
du skal bare ændre din data.open sådan at du kan se sql strengen inden du udfører den...så er det nemmere at fejlfinde.
23. august 2004 - 13:27
#26
Jeg får : SELECT * FROM elev WHERE (gruppe BETWEEN AND ) AND (konto BETWEEN AND ) Microsoft JET Database Engine error '80040e14' Syntax error (missing operator) in query expression '(gruppe BETWEEN AND ) AND (konto BETWEEN AND )'. /mc-e/searchperiod.asp, line 18 Tror ikke jeg har gjort det rigtigt ? <!--#include file="connect.asp"--> <% Set data = Server.CreateObject ("ADODB.Recordset") sqlQuery = "SELECT * FROM elev " &_ "WHERE (gruppe BETWEEN " & grp1 & " AND " & grp2 & ") "&_ "AND (konto BETWEEN " & kon1 & " AND " & kon2 & " )" response.write sqlQuery data.Open sqlQuery, MyConn %>
23. august 2004 - 13:35
#27
SELECT * FROM elev WHERE (gruppe BETWEEN <<der mangler noget her>> AND <<og her>> ) AND (konto BETWEEN <<og her>> AND <<og her>> ) dvs. der bliver altså ikke sat noget ind fra dine Request.Form("grp1") osv. Prøv med bare Request("grp1") i stedet for, eller lav din form om til method="post".
23. august 2004 - 13:38
#28
Hov... request.querystring("xxx") forsvandt ? Prøver lige igen
23. august 2004 - 13:45
#29
Kode : <!--#include file="connect.asp"--> <% Set data = Server.CreateObject ("ADODB.Recordset") sqlQuery = "SELECT * FROM elev " &_ "WHERE (gruppe BETWEEN " & request.form("grp1") & " AND " & request.form("grp2") & ") "&_ "AND (konto BETWEEN " & request.form("kon1") & " AND " & request.form("kon2") & " )" response.write sqlQuery data.Open sqlQuery, MyConn %> Resultat : SELECT * FROM elev WHERE (gruppe BETWEEN 80 AND 90) AND (konto BETWEEN 1 AND 999999999 ) Microsoft JET Database Engine error '80040e07' Data type mismatch in criteria expression. /mc-e/searchperiod.asp, line 18 Nu kommer det da med...eller hvad ?
23. august 2004 - 13:52
#30
jeps, nu er fejlen også en anden. Du sagde: "Både gruppe og konto er tekst format... ikke tal." Det er det, der er problemet nu. Prøv med: sqlQuery = "SELECT * FROM elev " &_ "WHERE (CINT(gruppe) BETWEEN " & request.form("grp1") & " AND " & request.form("grp2") & ") "&_ "AND (CINT(konto) BETWEEN " & request.form("kon1") & " AND " & request.form("kon2") & " )"
23. august 2004 - 13:55
#31
Microsoft VBScript compilation error '800a03fd' Expected 'Case' /mc-e/searchperiod.asp, line 14 SELECT * FROM elev " &_ -------^
23. august 2004 - 14:01
#32
Der er noget galt i din syntaks. Har du fået fjernet gåseøjnene omkring "Select..." fra asp-koden?
23. august 2004 - 14:05
#33
Koden : <% Set data = Server.CreateObject ("ADODB.Recordset") sqlQuery = "SELECT * FROM elev " &_ "WHERE (CINT(gruppe) BETWEEN " & request.form("grp1") & " AND " & request.form("grp2") & ") "&_ "AND (CINT(konto) BETWEEN " & request.form("kon1") & " AND " & request.form("kon2") & " )" response.write sqlQuery data.Open sqlQuery, MyConn %> Resultat: Microsoft VBScript compilation error '800a03ea' Syntax error /mc-e/searchperiod.asp, line 15 "WHERE (CINT(gruppe) BETWEEN " & request.form("grp1") & " AND " & request.form("grp2") & ----------------------------------------------------------------------------------------^
23. august 2004 - 14:10
#34
hmm, tror der er kommet nogle linieskift ind, som ikke skal være der: sqlQuery = "SELECT * FROM elev " &_ "WHERE (CINT(gruppe) BETWEEN " & request.form("grp1") & " AND " & request.form("grp2") & ") "&_ "AND (CINT(konto) BETWEEN " & request.form("kon1") & " AND " & request.form "kon2") & " )" (skal fylde 3 linier)..
23. august 2004 - 14:13
#35
Resultat : Microsoft VBScript compilation error '800a0401' Expected end of statement /mc-e/searchperiod.asp, line 16 "AND (CINT(konto) BETWEEN " & request.form("kon1") & " AND " & request.form "kon2") & " )" ----------------------------------------------------------------------------^
23. august 2004 - 14:23
#36
hovsa, der mangler en start parantes i: request.form "kon2")
23. august 2004 - 14:27
#37
Microsoft JET Database Engine error '80040e57' Overflow /mc-e/searchperiod.asp, line 17
23. august 2004 - 14:37
#38
<!--#include file="connect.asp"--> <% Set data = Server.CreateObject ("ADODB.Recordset") sqlQuery = "SELECT * FROM elev " &_ "WHERE (CINT(gruppe) BETWEEN " & request.form("grp1") & " AND " & request.form("grp2") & ") "&_ "AND (CINT(konto) BETWEEN " & request.form("kon1") & " AND " & request.form("kon2") & " )" data.Open sqlQuery, MyConn %> Koden er da rigtig ??
23. august 2004 - 14:39
#39
ja, syntaksen er fin nu. Overflow fejlen er fordi CINT ikke kan kapere de store talværdier du åbenbart har i dine gruppe og konto felter Prøv at erstatte de CINT med CLNG ( 2 steder ). CINT kan tage værdier -32,768 til 32,767 CLNG kan tage værdier -2,147,483,648 til 2,147,483,647 ...
23. august 2004 - 14:41
#40
hmm, eller prøv bare at bruge INT i stedet for.
23. august 2004 - 14:41
#41
YES! Det virkede... jeg takker mange gange... Smid et svar
23. august 2004 - 14:43
#42
Svar :-)
Kurser inden for grundlæggende programmering