PDA

Bekijk Volledige Versie : [ASP] probleem met database



A. Koolen
02/03/04, 19:15
Hallo,

Ik probeer met onderstaande code een database te vullen met alle data die op
een zondag vallen te beginnen op 19-11-2000.
Als ik dit script echter vaker uitvoer dan worden alle data waarvan de maand
+ dag omgedraaid ook een geldige datum zijn ook toegevoegd.

Ik heb zelf een functie ConvertMMDDJJJJ() gemaakt die de datum omzet in het
formaat mm-dd-jjjj.

Waarom krijg ik toch dubbele data?





Dim begindatum,einddatum,switchdatum,sql2,sql,RS
begindatum = "19-11-2000"
Response.Write("De begindatum is: " & begindatum & "<br>")
einddatum = ConvertDDMMJJJJ(Now())
Response.Write("De einddatum is: &nbsp;&nbsp;" & einddatum & "<br>")

'Maak een database met alle zondagen vanaf 19-11-2003
OpenConnection
sql = "SELECT Datum_stijn FROM stijn ORDER BY Datum_stijn"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open sql, Conn, 3, 3
If RS.BOF And RS.EOF Then
sql = "INSERT INTO stijn (Datum_stijn,Geld_stijn,Mode_stijn) VALUES ('" &
ConvertMMDDJJJJ(begindatum) & "','1,00','Plus')"
Conn.Execute(sql)
Response.Write("Begindatum toegevoegd<br>")
End If
switchdatum = begindatum
Do Until switchdatum = einddatum
If WeekDay(switchdatum) = 1 Then
' Response.Write("De switchdatum is: " & switchdatum & " dit is een
zondag dus er moet iets mee gebeuren<br>")
sql = "SELECT Datum_stijn FROM stijn WHERE Datum_stijn = #" &
ConvertMMDDJJJJ(switchdatum) & "#"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open sql, Conn, 3, 3
If RS.BOF And RS.EOF Then
sql2 = "INSERT INTO stijn (Datum_stijn,Geld_stijn,Mode_stijn) VALUES
('" & ConvertMMDDJJJJ(switchdatum) & "','1,00','Plus')"
Conn.Execute(sql2)
Response.Write("Datum " & switchdatum & " toevoegen<br>")
Else
' Response.Write("Datum bestaat al<br>")
End If
End If
switchdatum=DateAdd("d",1,switchdatum)
switchdatum = ConvertDDMMJJJJ(switchdatum)
LOOP

A. Koolen
02/03/04, 21:55
>
> Waarom krijg ik toch dubbele data?
>

Nog even wat aanvulling.

Ik heb het geprobeerd op PWS onder win 98 [NL]. Daar krijg ik dus enkele
dubbelen.

Onder IIS 5.1 Windows XP Pro [UK] loopt de database veel verder vol. Ik heb
het script toen maar onderbroken toen er tussen november 2000 en nu
ongeveerd 6500 zondagen werden gevonden en hij nog niet klaar was......

A. Koolen
03/03/04, 00:05
Ik heb nog eens wat zitten stoeien met de code.

Ik ben tot de volgende conclusie gekomen. Ik gebruik dus een Access
database.

Als ik de site op windows 98 [NL] met PWS draai dan krijg ik geen problemen
als ik het volgende doe.

De data allemaal in DDMMJJJJ notatie te zetten behalve bij een SELECT
statement. Hier moet het in MMDDJJJJ.
Dus het enige wat ik de code moet veranderen is dat in de UPDATE en INSERT
statements de code in DDMMJJJJ notatie is.

Als ik vervolgens deze code op mijn Win XP [UK] met IIS 5.1 zet loopt de
database vol. Ben maar weer gestopt toen hij bij 2000 records kwam.

Aangezien mijn provider IIS ook in het nederlands draait lijkt me het
probleem wel opgelost. Of vergeet ik iets?

En wat moet ik allemaal veranderen indien mijn provider (bv doordat ik naar
een andere ga) een UK IIS heeft draaien?

Arthur

Daniel Tryba
03/03/04, 00:25
A. Koolen <a.koolen@hccnetnospam.nl> wrote:
> switchdatum = begindatum
> Do Until switchdatum = einddatum

Dit ziet er al erg gammel uit, stel je voor dat je per ongeluk
start>eind kiest, dan is dit een oneindige loop! Een while switch<eind
is hier een stuk verstandiger

> switchdatum=DateAdd("d",1,switchdatum)

Volgens het DateAdd voorbeeld op
http://msdn.microsoft.com/library/en-us/script56/html/vsfctdateadd.asp
retouneerd 'DateAdd("m", 1, "31-Jan-95")' de waarde "28-Feb-95", dat is
een ander formaat dan Now oplevert.

> switchdatum = ConvertDDMMJJJJ(switchdatum)

Dus wat maakt die functie van switchdatum hier?

--

Daniel Tryba