Avatar billede jps6kb Novice
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 ?
Avatar billede ponyboye Nybegynder
23. august 2004 - 11:28 #1
nej
Avatar billede ponyboye Nybegynder
23. august 2004 - 11:29 #2
har du en gruppe med id 1 og 2
Avatar billede jps6kb Novice
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
Avatar billede jps6kb Novice
23. august 2004 - 11:34 #4
HUH? Er ikke med på gruppe med id 1 og 2 ?
Avatar billede ponyboye Nybegynder
23. august 2004 - 11:36 #5
SELECT       
      kon1, kon2
                 
FROM 
        dintabel
WHERE
        ditgruppefelt = grp1, grp2
Avatar billede jps6kb Novice
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 ? :)
Avatar billede ponyboye Nybegynder
23. august 2004 - 11:55 #7
hvad er der i tabellerne kon2/1 og grp1/2
Avatar billede jps6kb Novice
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...
Avatar billede ponyboye Nybegynder
23. august 2004 - 12:01 #9
okay. så skal den hente grp 1/2 hvor kon1 og kon2 passer
Avatar billede jps6kb Novice
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 ?
Avatar billede ponyboye Nybegynder
23. august 2004 - 12:06 #11
ja okay
Avatar billede ponyboye Nybegynder
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")& "'")
Avatar billede ponyboye Nybegynder
23. august 2004 - 12:14 #13
"SELECT * FROM elev WHERE gruppe <= "&("kon1")& "'  AND gruppe >= "&("kon2")& "'")
Avatar billede jps6kb Novice
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
Avatar billede yellow Nybegynder
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 & " )"
Avatar billede ponyboye Nybegynder
23. august 2004 - 12:17 #16
"SELECT * FROM elev WHERE gruppe <= '"&("kon1")& "'  AND gruppe <= '"&("kon2")& "'")
Avatar billede jps6kb Novice
23. august 2004 - 12:17 #17
Yellow... ser rigtigt ud... jeg prøver det lige
Avatar billede jps6kb Novice
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
%>
Avatar billede jps6kb Novice
23. august 2004 - 12:59 #19
Anything ?

Både gruppe og konto er tekst format... ikke tal.
Avatar billede yellow Nybegynder
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.
Avatar billede jps6kb Novice
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
Avatar billede jps6kb Novice
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
%>
Avatar billede yellow Nybegynder
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
Avatar billede jps6kb Novice
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>
Avatar billede yellow Nybegynder
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.
Avatar billede jps6kb Novice
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
%>
Avatar billede yellow Nybegynder
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".
Avatar billede jps6kb Novice
23. august 2004 - 13:38 #28
Hov... request.querystring("xxx") forsvandt ? Prøver lige igen
Avatar billede jps6kb Novice
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 ?
Avatar billede yellow Nybegynder
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") & "

)"
Avatar billede jps6kb Novice
23. august 2004 - 13:55 #31
Microsoft VBScript compilation error '800a03fd'

Expected 'Case'

/mc-e/searchperiod.asp, line 14

SELECT * FROM elev " &_
-------^
Avatar billede yellow Nybegynder
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?
Avatar billede jps6kb Novice
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") &
----------------------------------------------------------------------------------------^
Avatar billede yellow Nybegynder
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)..
Avatar billede jps6kb Novice
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") & " )"
----------------------------------------------------------------------------^
Avatar billede yellow Nybegynder
23. august 2004 - 14:23 #36
hovsa, der mangler en start parantes i:
request.form "kon2")
Avatar billede jps6kb Novice
23. august 2004 - 14:27 #37
Microsoft JET Database Engine error '80040e57'

Overflow

/mc-e/searchperiod.asp, line 17
Avatar billede jps6kb Novice
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 ??
Avatar billede yellow Nybegynder
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 ...
Avatar billede yellow Nybegynder
23. august 2004 - 14:41 #40
hmm, eller prøv bare at bruge INT i stedet for.
Avatar billede jps6kb Novice
23. august 2004 - 14:41 #41
YES! Det virkede... jeg takker mange gange...

Smid et svar
Avatar billede yellow Nybegynder
23. august 2004 - 14:43 #42
Svar :-)
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