Avatar billede musicchart.dk Nybegynder
31. maj 2002 - 23:31 Der er 10 kommentarer og
1 løsning

Skrive i en database

Hey

hvad gør jeg galt her (det er et udsnit):

strSQL = "Select * From counter Where dato"

If strSQL <> vbShortDate then
strSQL = "update counter set dato = ""vbShortDate""" and "update counter set idag = "0""
Conn.Execute(strSQL)
Else
End if


...kan man ikke skrive vbShortDate i en SQL-sætning?...

/Bjarke - (KLEIFDESIGN)
Avatar billede tmceu Praktikant
31. maj 2002 - 23:42 #1
vbShortName er en konstant for et format. Du kan istedet bruge eks. NOW() el. getdate() afhængig af hvilken database du anvender.
Avatar billede tmceu Praktikant
31. maj 2002 - 23:43 #2
Og i øvrigt adskilles felter med komma i updates, eks.

UPDATE Tabel SET Felt1=123, Felt2='abc'
Avatar billede musicchart.dk Nybegynder
31. maj 2002 - 23:47 #3
<< tmceu  >> , hvordan henter jeg "5/31/2002"  ud af "Now" ?
Avatar billede tmceu Praktikant
31. maj 2002 - 23:54 #4
Hvis du vil have den indsat i en database, behøver du i mange tilfælde ikke at "hive" en dato ud i "dit" format, da now i denne sammenhæng er en databasefunkton.

Hvis du anvender Access, vil jeg tro at det rigtige SQL statement for dig er:

strSQL = "update counter set dato = now(), idag = 0"

Hvis idag er et tekstfelt, skal du i stedet anvende:

strSQL = "update counter set dato = now(), idag = '0'"

Og så skal du være opmærksom på, at ovenstående sætning ændrer alle poster i tabellen, da du ikke har nogen WHERE clause på.
Avatar billede musicchart.dk Nybegynder
02. juni 2002 - 00:30 #5
hmm... jeg har lavet koden lide om, men det virker stadig ikke (undskylf jeg først skriver tilbage nu, men jeg har ikke kunne komme ind på eksperten, ved ikke om serveren har været nede?):

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../db/dbase.mdb")
Conn.Open DSN

strSQL = "Select * From counter"
Set rs = Conn.Execute(strSQL)
strNAVN = rs("dato")


If strNAVN <> date() then
strSQL = "update counter set dato = date(), idag = "1""
Conn.Execute(strSQL)
Else
End if

strSQL2 = "update counter set ialt=ialt+1, idag=idag+1"

Conn.Execute(strSQL2)



Conn.Close
Set Conn = Nothing



.... her har du hele koden... men den kommer stadig med en fejl,
Avatar billede tmceu Praktikant
02. juni 2002 - 03:26 #6
Hvis idag er et tekst felt:

strSQL = "update counter set dato = date(), idag = '1'"

Hvis det er nummerisk:

strSQL = "update counter set dato = date(), idag = 1"
Avatar billede musicchart.dk Nybegynder
02. juni 2002 - 13:12 #7
nu nulstiller den min "idag", men det gør den altid selvom det er den samme dato jeg går ind på siden? Hvis det er den samme dato, burde den +1 til min idag hver gang jeg går ind på siden. Det er som om den kører dette:

If strNAVN <> date() then
strSQL = "update counter set dato = date(), idag = "1""
Conn.Execute(strSQL)
Else
End if

...hver gang.
Avatar billede tmceu Praktikant
02. juni 2002 - 13:26 #8
Jeg tror det går galt her:

strNAVN = rs("dato")

If strNAVN <> date()

Jeg forstår ikke helt navngivningen af din strNAVN, hvilket indikerer at det er en streng, som du forsøger at sammenligne med en dato ?

Prøv evt. at lave en response.write på værdierne strNAVN og date(), så vil du garanteret se en forskel i format.

Du kunne måske lave et check med datediff funktionen, men jeg er ikke sikker, da jeg ikke helt er klar over hvad du vil :-)

Du mangler måske også en WHERE clause, med mindre du bevidst vil opdatere alle poster ?
Avatar billede musicchart.dk Nybegynder
02. juni 2002 - 13:33 #9
Mht. til min WHERE clause, så er det kun en post.
Jeg har lavet en reponse.write på dem begge, og de er accurat det sammen, nemlig: 6/2/2002
Avatar billede musicchart.dk Nybegynder
02. juni 2002 - 13:45 #10
nå, nu virker den, og det var en fejl fra min side... jeg havde ikke sat min colonne i min tabel i min database til at være en dato-format men kun som tekst... undskyld..!
Avatar billede tmceu Praktikant
02. juni 2002 - 23:14 #11
Du skal ikke undskylde overfor mig, det er jo dig der har problemet :-)
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