06. januar 2005 - 07:38Der 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?
Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
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.
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?
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"
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....
... 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.
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)
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.