Avatar billede joni@vordb Nybegynder
27. oktober 2000 - 12:13 Der er 26 kommentarer og
1 løsning

mystik ved udtræk fra database

Hej

Jeg har en database (access) der indeholder et datofelt (dd-mm-åå).
Nu vil jeg så gerne hente data fra basen og jeg bruger bl.a. datoen som kriterie:
Sql = \"SELECT * FROM    1 where (maskine=\" & PC & \" AND dato=#\" & dag & \"#) Order by tid\"

Det går også fint nok, sådan da, Det er nemlig kun nogen dato\'er den vil vise records for, og jeg kan altså ikke finde en logik i hvilke den viser og hvilke den ikke viser.
På http;//www.vordingborg.dk/udvikling/admin/pc/test.asp kan i se hvad jeg mener
Advarsel, siden indeholder en løkke der løber 365 gange + et billede 20000 kb (ca.), så det tager lidt tid inden siden kommer frem.

Forhåbentlig er der 1 af jer der kan give mig en forklaring og gerne et løsningsforslag.
//john
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 12:18 #1
20.000 KB ??
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 12:18 #2
måske 20 KB ?
Avatar billede joni@vordb Nybegynder
27. oktober 2000 - 12:21 #3
øh, nå ja *g*
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 12:21 #4
Nu ved jeg ikke om

dag = date()+i lægger \'i\' dage til datoen, men har du prøvet med:

dag = DateAdd(\"d\", i, date)

?
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 12:21 #5
Eller så må jeg sige det er de hurtigste 20 MB jeg nogensinde har hentet .. men jeg har osse lige fået ISDN .. må være derfor *låååål*
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 12:24 #6
Hvad er det helt nøjagtigt du vil ??
Avatar billede joni@vordb Nybegynder
27. oktober 2000 - 12:29 #7
Opdagede lige en lille fejl, jeg tager udgangspunkt i dags dato og kører så et år frem, derfor bliver alle dato\'er fra før i dag ikke vist.
Men det fremgår alligevel at den ikke tager alle dato\'er med. fx. mangler 1/11 og 10/11 og 08/12.
Hvorfor udskrives disse dato\'er ikke ?
Og hvordan får jeg den til at skrive alle dato\'er?

//john
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 12:33 #8
Dvs. du vil have fra I dag til \"i går\"+1 år (365 dage) og der tester du for at se om datoen eksisterer, og gør den skal den udskrives .. korrekt ?
Avatar billede joni@vordb Nybegynder
27. oktober 2000 - 12:37 #9
Rigtigt, selv om jeg egentlig ville have testet på perioden 1/1-2000 til 31/12-2000, men skidt med det, problemet viser sig alligevel for de dator der ligger fra idag og frem til den 31/12-2000

//john
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 12:39 #10
Har du prøvet at skifte Date()+1 ud med DateAdd(\"d\", 1, Date) ? Hvis ikke, så prøv lige bare for en sikkerhedsskyld..
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 12:41 #11
Faktisk vil du kunne teste fra 1/1-2000 til 31/12-2000 hvis du bruger DateAdd.

strDato = \"01-01-2000\"
strNyDato = DateAdd(\"d\", 1, strDato) \' lægger een dag til strDato

<%=strDato%> vil være \"02-01-2000\"
Avatar billede joni@vordb Nybegynder
27. oktober 2000 - 12:45 #12
Ja, det har jeg prøvet og det gav samme resultat.
Siden her er kun en test. i den virkelige verden er det brugeren der taster datoen ind, hvorefter der undersøges om der en nogle poster på den dato og igivet fald udskrives de, men det er jo noget skidt når der findes poster på en dato der ikke vil udskrives, som fx. 1/11 eller den 8/12.
Den \"rigtige\" kode se således ud:
<%
set rs = server.createobject(\"adodb.recordset\")
PC = Request(\"PC\")
dag=request(\"dato\")
if len(dag)<1 then
dag=date()
end if
IF PC=0 THEN
Sql = \"SELECT * FROM 1 Where (maskine<=3 AND dato=#\" & dag & \"#) ORDER BY maskine\"
else
Sql = \"SELECT * FROM    1 where (maskine=\" & PC & \" AND dato=#\" & dag & \"#) Order by tid\"
end if
response.write sql
Rs.Open Sql, pconline, 0, 1
%>

//john
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 12:49 #13
den kode du har skrevet her, er det en del af den kode der ligger på nettet pc/test.asp ?
Avatar billede joni@vordb Nybegynder
27. oktober 2000 - 12:53 #14
Fandt ud af at
dag=cdate(\"01-01-00\")+1
også virker :-)

Desvære virker det ikke i den rigtige kode at til føje
dag=cdate(\"dag\")
lige før if pc=0 osv...

//john
Avatar billede joni@vordb Nybegynder
27. oktober 2000 - 12:54 #15
nej, den ligge kode jeg skrev sidst ligger på en anden side, men den side er ikke tilgængelig fra nettet
Avatar billede joni@vordb Nybegynder
27. oktober 2000 - 12:55 #16
den ligge kode = den kode
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 12:59 #17
CDate() .. ja det er ligesom CInt og de andre C*\'ere.

Jeg må indrømme at jeg ikke har den fjerneste idé om hvad der er galt .. jeg er totalt lost...
Avatar billede joni@vordb Nybegynder
27. oktober 2000 - 13:05 #18
hehe Velkommen i klubben :-)
test.asp viser nu alle dato\'er efter at jeg har erstattet dag=date()+i med dag=cdate(\"01-01-00\")+i

men det rigtige dokument vil stadig ikke vise alle datoer, fx. viser den fint den 23/11 men ikke den 10/11
prøv selv www.vordingborg.dk/udvikling/admin
bruger=\"test1\" - password = \"test1\"
Vælg \"se pc-bestillinger\"
og vælg Internet pc 1

Jeg kører fra arbejde nu, men melder tilbage senere fra privaten.

//john
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 13:08 #19
Nå .. jeg smutter i seng nu .. så jeg kommentere/svarer ikke mere før i aften ..
Avatar billede tdaugaard Nybegynder
27. oktober 2000 - 13:19 #20
Øhh .. lige et dumt spørgsmål .. du vil bare have alle datoer fra dags dato til \"i går\"+1 år ikke ??

Var det så ikke nemmere at lave det i SQL strengen ?

sql = \"SELECT * FROM 1 WHERE (maskine<=3 AND dato => #\" & dag & \"# AND date =< #\" & DateAdd(\"yyyy\", 1, dag) & \"#) ORDER BY maskine\"

Tager (håber jeg!) alle poster hvor Dato er større/lige med den dato der er indtastet og hvor Dato er mindre end \"dag\"+1 år.
Avatar billede dkjohn Nybegynder
28. oktober 2000 - 16:14 #21
Nej jeg vil have den til at vise de poster der findes på den dato brugeren taster ind.
Koden jeg forsøger at bruge til det er den du kan se i mit indlæg nr. 5, for at se koden i funktion skal du følge det link jeg skrev i mit forige.

//john
Avatar billede tdaugaard Nybegynder
28. oktober 2000 - 16:25 #22
Forkert formuleret.

Det jeg mente var at du ville have alle datoer der ER i databasen fra og med den dato der bliver indtastet, til og med den dato+1 år, ikke ?
Avatar billede dkjohn Nybegynder
28. oktober 2000 - 16:31 #23
Nej, det var kun i test.asp, som jeg kun lavede for at vise at den kun udskriver nogle datoer og at der tilsyneladende ikke er nogen logik i hvilke den udskriver og hvilke den ikke udskriver.

På \"se-pcbestillinger\" skal den kun udskrive de poster der er på den dato man har angivet og ikke andre.

//john
Avatar billede tdaugaard Nybegynder
28. oktober 2000 - 16:36 #24
Ahh ... men hvis du skriver d. 11-12-2000 så får da du datoen frem hvis den er der .. jeg fatter slet ikke hvad der er galt !?
Avatar billede dkjohn Nybegynder
28. oktober 2000 - 16:41 #25
Jo måske får jeg 11-12-2000 hvis den er der og måske får jeg den ikke selv om den er der. Det er netop det der er problemet. Prøv fx. at gå ind på admin siden og prøv med datoen 08-12-00 eller 08-12-2000 som du kan se af test.asp findes datoen i basen, den bliver bare ikke skrevet ud på adminsiden.
Avatar billede joni@vordb Nybegynder
30. oktober 2000 - 09:39 #26
Er der slet ingen der kan hjælpe med dette spm. ?
Avatar billede joni@vordb Nybegynder
01. november 2000 - 09:41 #27
lukker dette spm. og opretter det igen med håbet om endelig at få løst mysteriet.
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