Avatar billede jmc Nybegynder
25. oktober 2003 - 00:31 Der er 11 kommentarer og
1 løsning

slette hvis data ikke findes mere!

Et et formfelt pastes en lang kommasep tekst af medlemmer. Hvis medlemmet ikke længere findes i filen skal medlemmet slettes fra databasen, eller skal det opdateres.

Hvordan tilføjer jeg denne SQL til dette?

'Jeg skal nok starte med at slette dem som ikke længere findes i filen, men som er i databasen.


          '## Check om medlemsnummeret findes i databasen findes i forvejen'
            SQL_findes = "SELECT medlemsnr FROM medlemmer WHERE medlemsnr= " & medlemsnr & ""
            Set rs = oConn.Execute(SQL_findes)
           
            '## Hvis det ikke gør, indsættes det'
            If Rs.Eof Then
              SQL =  "INSERT INTO Medlemmer (medlemsnr,Firma,Adresse,Adresse2,vBy,Kontakt) " & _
                                  " VALUES (" & medlemsnr & ",'" & firma & "','" & adresse & "','" & adresse2 & "','" & by & "','" & kontakt & "')"
            '## Hvis det gør, opdateres det'
            Else
             
                SQL = "UPDATE Medlemmer SET Firma = '" & firma & "', Adresse = '" & adresse & "', Adresse2 = '" & adresse2 & "', vBy = '" & by & "', Kontakt = '" & kontakt & "' WHERE medlemsnr = " & medlemsnr

            End If
Avatar billede dawin_dk Nybegynder
25. oktober 2003 - 01:21 #1
du laver et felt der hedder "wasinfile" med typen ja/nej (bit) ... du starter så med at sætte det til false ...

efterhånden som du så finder dem i databasen opdaterer du dem til true og indikerer dermed at de findes...

til sidst vil alle dem der ikke fandtes i filen være false og ka slettes relativt nemt.
Avatar billede thesurfer Nybegynder
25. oktober 2003 - 01:37 #2
Husk at rette 'by' til 'vby' alle steder.
Jeg ved ikke hvordan din fil ser ud.. så jeg har lavet et test-format kaldet strMed.

Det skal lige siges at koden her IKKE er testet!
Jeg har ikke brugt nogen database.

Håber det virker.. Here goes:

<%
Option Explicit ' bør altid bruges, alle variabler SKAL defineres, undgår stavefejl
dim strMed, arrMed ' variabler til medlemsnumre
dim SQL_findes, SQL_ny, SQL_op ' variabler til sql strenge
dim rs, oConn ' variabler til recordset og connection
dim i ' iteration = gentagelser, bruges til loop

strMed = "123;864;666;754;" ' indholdet fra filen, medlemsnumre separaret af ";" tegnet
arrMed = split(strMed, ";") ' splitter medlemsnumrene op ved ";" tegnet

for i = LBound(arrMed) to UBound(arrMed) ' fra det første medlem og til det sidste medlem

  SQL_findes = "SELECT medlemsnr FROM medlemmer WHERE medlemsnr= " & medlemsnr
  Set rs = oConn.Execute(SQL_findes) ' udfør strengen
 
  if (rs.bof) or (rs.bof) then

    ' med.nr. blev ikke fundet.. se om det er andre data der
    ' tilhører denne unavngivent bruger:
    if rs("firma") <> "" OR _
      rs("adresse") <> "" OR _
      rs("adresse2") <> "" OR _
      rs("vby") <> "" OR _
      rs("kontakt") <> "" then

      ' unavngiven bruger har gammel info som slettes:
      SQL_slet = "Delete from medlemmer where id = " & rs("id")
      Conn.Execute(SQL_slet)

    else

      ' med.nr. eksistere ikke, og har ikke gammel info, derfor indsættes brugeren i db:
      SQL_ny =  "INSERT INTO Medlemmer (medlemsnr,Firma,Adresse,Adresse2,vBy,Kontakt) " & _
      " VALUES (" & medlemsnr & ",'" & firma & "','" & adresse & "','" & adresse2 & "','" & vby & "','" & kontakt & "')"
      Conn.Execute(SQL_ny) ' udfør strengen
    end if

  else

    ' brugeren findes, opdater med de respektive data:
    SQL_op = "UPDATE Medlemmer SET Firma = '" & firma & "', Adresse = '" & adresse & "', Adresse2 = '" & adresse2 & "', vBy = '" &  vby & "', Kontakt = '" & kontakt & "' WHERE medlemsnr = " & medlemsnr
    oConn.Execute(SQL_op) ' udfør strengen
  end if

next
%>
Avatar billede thesurfer Nybegynder
25. oktober 2003 - 02:14 #3
Jeg er i tvivl om slet-delen virker, men denne kode burde virke:

if (rs.bof) or (rs.eof) then
      ' med.nr. eksistere ikke, indsætte brugeren i db:
      SQL_ny =  "INSERT INTO Medlemmer (medlemsnr,Firma,Adresse,Adresse2,vBy,Kontakt) " & _
      " VALUES (" & medlemsnr & ",'" & firma & "','" & adresse & "','" & adresse2 & "','" & vby & "','" & kontakt & "')"
      Conn.Execute(SQL_ny) ' udfør strengen
  else
    ' brugeren findes, opdater med de respektive data:
    SQL_op = "UPDATE Medlemmer SET Firma = '" & firma & "', Adresse = '" & adresse & "', Adresse2 = '" & adresse2 & "', vBy = '" &  vby & "', Kontakt = '" & kontakt & "' WHERE medlemsnr = " & medlemsnr
    oConn.Execute(SQL_op) ' udfør strengen
end if

..hmm.. det burde vel have været (i slet-delen):

    if (rs("firma") <> "") OR _
      (rs("adresse") <> "") OR _
      (rs("adresse2") <> "") OR _
      (rs("vby") <> "") OR _
      (rs("kontakt") <> "") then

altså med parenteser..
Avatar billede dawin_dk Nybegynder
01. november 2003 - 17:20 #4
fået det til at virke og kan vi få en afslutning på den her tråd ?
Avatar billede jmc Nybegynder
12. december 2003 - 22:22 #5
hvem skal have points?
Avatar billede thesurfer Nybegynder
15. december 2003 - 16:47 #6
Hvilket svar kunne du bruge? Det svar giver du points.
Avatar billede jmc Nybegynder
15. december 2003 - 17:22 #7
det husker jeg ikke, lad mig bare dele dem ud.
Avatar billede thesurfer Nybegynder
15. december 2003 - 17:30 #8
jmc> Læg selv et svar og accepter det.
Avatar billede jmc Nybegynder
15. december 2003 - 17:35 #9
ok ;o)
jeg kan se at jeg stadigt benytter by såp jeg fandt nok en anden fejl som gjorde det..
Avatar billede jmc Nybegynder
15. december 2003 - 17:36 #10
nej det er noget møg, jeg kan ikke finde dokumentet og jeg sidder med 100 opgave, smid et link så jeg kan overføre nogle points. Jeg kan ikke bruge tid på at lede mere.
Avatar billede thesurfer Nybegynder
15. december 2003 - 17:43 #11
Det forstod jeg ikke.. link til hvad? hvad leder du efter?
Avatar billede jmc Nybegynder
15. december 2003 - 17:57 #12
ikke noget forget it
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