Avatar billede m_187 Nybegynder
23. februar 2004 - 18:35 Der er 5 kommentarer og
1 løsning

Opret eller opdater i database

Hej

Er det muligt at skrive en "insert" sql-sætning hvor den opdater et record, hvis record'et allerede er blevet oprettet?

Der må nemlig ikke være 2 records med samme dato.. Så hvis brugeren forsøger at oprette noget som har samme dato om en record i databasen skal den altså overskrive eksisterende...
Avatar billede eagleeye Praktikant
23. februar 2004 - 18:44 #1
Nej, så må du hente og se om den findes, så lave enten insert eller update:

id = 10
sql = "select * from tabelnavn where id = " & id
Set rs = Conn.Execute(SQL)
if rs.EOF then
  'Den findes ikke indsæt
  SQL = "insert into tabelnavn (kol1,kol2) values ('abc','xyz');
else
  'Den findes opdater
  SQL = "update tabelnavn set kol1='def, kol2='æøå' where id = " & id
end if
Conn.Execute(SQL)
Avatar billede m_187 Nybegynder
23. februar 2004 - 18:51 #2
Okay pis. Men tak..
Avatar billede krukken Juniormester
23. februar 2004 - 18:54 #3
Du kan jeg bare lave datoen unik, også lave en update-sqlsætning. Insert laver altid en ny række i tablen
Avatar billede m_187 Nybegynder
24. februar 2004 - 13:13 #4
Jeg skal lige høre om denne kode er helt rigtig... Der er noget om ikke virker i mit script, og nu er min mistanke altså faldet på denne betingelse...

Den lader ikke til at ville opdatere hvis der allerede eksisterer et record med samme dato i databasen, den laver bare et nyt.

If mode = "update" Then

    varDate = Date + Request.QueryString("day")
   
    ' Forbindelse til databasen
    Set Conn = Server.CreateObject("ADODB.Connection")
    DSN = "DRIVER={Microsoft Access Driver (*.mdb)};"
    DSN = DSN & "DBQ=" & Server.MapPath("Database/data.mdb")
    Conn.Open DSN
   
    strSQL = "SELECT * FROM weather WHERE SubmitDate = " & varDate
    Set rs = Conn.Execute(strSQL)
   
   
    If rs.EOF Then
   
        strSQL = "INSERT INTO Weather(WeatherType, Temperature, SubmitDate) VALUES('" & Request.Form("formType") & "','" & Request.Form("formTemp") & "','" & varDate & "')"
   
    Else
   
        strSQL = "UPDATE Weather SET WeatherType= '" & Request.Form("formType") & "', Temperature = '" & Request.Form("formTemp") & "' WHERE SubmitDate = " & varDate
   
    End If
   
    Conn.Execute(strSQL)
   
    Conn.Close
    Set Conn = Nothing

End If


Undskyld den lange kode, men jeg må være sikker... :)
Avatar billede eagleeye Praktikant
24. februar 2004 - 19:54 #5
umiddelbart mangler der ' omkring SubmitDate med mindre det er en tal kolonne:

    strSQL = "SELECT * FROM weather WHERE SubmitDate = '" & varDate & "'"
Avatar billede eagleeye Praktikant
24. februar 2004 - 19:54 #6
Samt i Updaten

        strSQL = "UPDATE Weather SET WeatherType= '" & Request.Form("formType") & "', Temperature = '" & Request.Form("formTemp") & "' WHERE SubmitDate = '" & varDate & "'"
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