Avatar billede mzane Nybegynder
06. januar 2005 - 07:38 Der er 10 kommentarer og
1 løsning

Problemer med SQL

Hej Xperter,

Jeg er ikke så skarp i min sql. Koder mod en MS SQL server

Jeg har feks. følgende SQL sætning som jeg fyre af mod db'en:

*********
SQL="SELECT Nr, Navn, Efternavn, Telefon"&_
            " FROM dbo.Bruger"&_
            " WHERE    (Nr >= 100)"&_
            " ORDER BY Efternavn, Navn"

set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, oForb_acc, adLockOptimistic

while not rs.EOF
    if Request.Form(rs.Fields("Nr"))=312 then
PROBLEM STARTER HER
... vil gerne køre følgende:
"UPDATE Bruger SET Navn=NULL WHERE Nr="& Nr

...ellers bare videre
rs.Fields("Nr")
    end if
    rs.MoveNext
wend
**************

Men hvis jeg nu gerne vil ind i tabellen og opdatere samtidigt, hvordan skal det så gøres?

Håber virkelig I kan hjælpe mig!
På forhånd tak!
Avatar billede Syska Mester
06. januar 2005 - 08:08 #1
Hvad er problemet? hvad giver den af fejl? Der skulle ikke være noget i vejn for at du kan lave en update efter en select...
Avatar billede fennec Nybegynder
06. januar 2005 - 08:21 #2
Nu har jeg aldrig brugt denne metode til at updatere men mener det er sådan her:

while not rs.EOF
    if Request.Form(rs.Fields("Nr"))=312 then
      rs("NR") = Nr
      rs.update
    end if
    rs.MoveNext
wend
Avatar billede mzane Nybegynder
06. januar 2005 - 08:46 #3
Hej med jer og tak for interesse.
buzzzz<--- Min kode giver ingen fejl. Jeg ville gerne bare vide hvordan man opdatere databasen uden at åbne flere connections til den samtidigt.

fennec<--- Noget lign. dit eksempel. Istedet for at opdatere "nr" vil jeg gerne opdatere en masse felter ved brug af en ny sql sætning.

...håber det giver mening?
Avatar billede fennec Nybegynder
06. januar 2005 - 08:59 #4
Mener du sådan her, for det havde du jo næsten lavet:

rs1.open "update Bruger SET Navn=NULL WHERE Nr="& Nr, oForb_acc, adLockOptimistic
Avatar billede mzane Nybegynder
06. januar 2005 - 09:55 #5
Allerførst tak for svar!
...måske er det hvad jeg mener! Dvs. kan jeg feks gøre følgende:

SQL="SELECT Nr, Navn, Efternavn, Telefon"&_
            " FROM dbo.Bruger"&_
            " WHERE    (Nr >= 100)"&_
            " ORDER BY Efternavn, Navn"

set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, oForb_acc, adLockOptimistic

while not rs.EOF
    if Request.Form(rs.Fields("Nr"))=312 then
rs.open "UPDATE Bruger SET Navn=NULL WHERE Nr="& Nr

rs.Fields("Nr")
    end if
    rs.MoveNext
wend

Kan den godt det i en while løkke? ...altså bruge det samme rs?
Hvis du kunne overskue det kunne du så prøve at sætte, dine tanker ind i min kode eller selv komme med et kode eks. så jeg ved hvad du mener?
Avatar billede mzane Nybegynder
06. januar 2005 - 10:07 #6
Lad os f.eks. antage at jeg gerne vil have opdateret flere ting i db'en lige i træk... kan jeg så bare bruge rs.open hver gang... eks:

rs.open "UPDATE Bruger SET Navn=NULL WHERE Nr="& Nr
rs.open "UPDATE Bruger SET Navn=Lars WHERE Efternavn=Larsen"
rs.open "UPDATE Bruger SET Nr=Telefon WHERE Navn=Lars"

Hvordan kan det lade sig gøre?
Avatar billede fennec Nybegynder
06. januar 2005 - 10:09 #7
Nej, der skal bruges en ny. Men jeg er ikke helt med på hvor du vil hen... Du selecter en gruppe brugere, som du så laver et gennemløb på. Her tjekker du så om Nr=312 også laver du en update, som i dette tilfælde ikke har noget med den bruger at gøre. Jeg vil tro du slet ikke behøver at selecte de brugere, men bare kan gøre sådan:

rs.Open "UPDATE Bruger SET Navn=NULL WHERE Nr=312",oForb_acc, adLockOptimistic

Så updatere databasen automatisk alle de brugere hvor Nr=312.

Kan du ikke prøve at forklare, hvad du vil have der skal ske....
Avatar billede fennec Nybegynder
06. januar 2005 - 10:11 #8
... Til din sidste kommentar. Det kan du godt. "Nej, der skal bruges en ny" var rettet mod at du ikke kan bruge det samme rs som du bruger til at loope med.
Avatar billede mzane Nybegynder
07. januar 2005 - 11:36 #9
Jeg fandt ud af at jeg havde kvajet mig lidt. Fennec du har egentlig det rigtige svar, selvom det ikke lige helt var sådan. Men jeg har ikke problemet mere. Post et svar og der er point til dig [fennec] :o)

Tak for hjælpen
Avatar billede fennec Nybegynder
07. januar 2005 - 11:37 #10
.o) <-- One Eyed Jack
Avatar billede mzane Nybegynder
07. januar 2005 - 11:40 #11
:o)) <-- Happy John

Tak for din tid!
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