04. oktober 2004 - 10:41Der er
10 kommentarer og 1 løsning
Dato fra en tabel til en anden
Jeg skal have kopieret dato'en fra et dato felt i én tabel til et datofelt i en anden tabel. Rækken datoen skal sættes ind i, er allerede eksisterende, og det er en Update-sql jeg vil bruge.
Sad og rodede med det igår, men enten sagde den syntax fejl ved update-sætningen, eller også kom den og sagde at der var uoverensstemmelser mellem datatyperne, hvilket jeg ikke helt forstår, da jeg smider datoen ind i en variabel jeg ikke manipulerer med inden jeg vil smide det ind i den anden tabel.
Der er garanteret en eller anden funktion jeg skal bruge for at den forstår at det er en dato - men hvilken?
Når ASP får en dato fra databaser bliver den konverteret til ASP formatet. Nå du så bruger den i en anden SQL-sætning, bliver den ikke konverteret tilbage. Hvis du ikke kan lave det hele i en SQL sætning, skal du selv konvertere datoen tilbage til et format Access kan forstå.
Går ud fra du bruger Access. Der har jeg denne funktion du kan bruge til at konvertere med, ellers kan den ændres til det format databasen skal bruge.
Function ConvertToSqlDate(dato) dim SQLYear,SQLMonth,SQLDay SQLYear = Year(dato) SQLMonth = Month(dato) SQLDay = Day(dato) if SQLDay<10 then SQLDay = 0&SQLDay end if if SQLMonth<10 then SQLMonth = 0&SQLMonth end if ConvertToSqlDate = SQLMonth&"-"&SQLDay&"-"&SQLYear End Function
hmm fandt lige noget der hedder DateValue(datotid) - ser ud til at den kunne bruges, eller hvad?
hulla:
'Hent id på sidst oprettede indlæg Conn.Execute ("INSERT INTO Indlæg (Forfatter, Tekst, Tråd) VALUES ('" & request.querystring("username") & "', '" & request.form("message") & "', " & thread & ")")
set rs = Conn.Execute("SELECT @@IDENTITY as LastID") while not rs.EOF message = rs("LastID") rs.MoveNext Wend rs.close set rs = Nothing
'Hent dato og tid fra sidst oprettede indlæg set rs = Conn.Execute("SELECT Datotid FROM Indlæg WHERE id=" & message) while not rs.EOF Datotid = rs("Datotid") rs.MoveNext Wend rs.close set rs = Nothing
'Opdater dato/tid i tråde Conn.Execute ("UPDATE Tråde SET Antalsvar = Antalsvar + 1, Sidstedato = '" & Datotid & "', Sidsteforfatter = '" & request.querystring("username") & "' WHERE id = " & request.querystring("threadid") )
'Opdater dato/tid i fora Conn.Execute ("UPDATE Fora SET Sidstedato = " & Datotid & ", Sidsteforfatter = '" & request.querystring("username") & "' WHERE id = " & request.querystring("forumid") )
Som det ses har jeg forsøgt mig frem med både apostroffer og uden apostroffer
fennec:
Lige nu bruger jeg Access, ja, men jeg skulle gerne kunne understøtte mysql også - derfor bruger jeg så vidt muligt generelle løsninger ;)
Jeg tvivler på du kan bruge DateValue() funktionen, hvis du vil bruge det med en anden database. Nu ved jeg ikke om du bruger DateValue() funktionen i Access eller ASP, mem den er ikke i MySQL så du kan ikke bruge Access funktionen. I ASP genkender den formatet mm-dd-yyyy (som også er access' format), men det er ikke det format som MySQL bruger (yyyy-mm-dd), så jeg tror heller ikke den dur.
Det er faktist derfor jeg bruger den funktion fra "04/10-2004 10:52:31" som en include på mine sider. Hvis jeg skifter database, tilpasser jeg bare den til det nye format.
det sjove af det hele er, at da jeg skulle bruge det igen igår, havde jeg ikke adgang til nettet, og havde ingen kopi i nærheden. Så kom jeg til at tænke på en lille detalje: Dato'er i Access skal omgives af nummertegn, altså # - prøvede det og det virkede.
Har måske været lidt for opsat på en cross-db løsning til at komme på denne ide :D
DateValue() kune da bruges, men ikke hvis det er den _rigtige_ dato der skal i en access db *lol*
Synes godt om
Ny brugerNybegynder
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.