Avatar billede mecenor Nybegynder
05. august 2005 - 17:01 Der er 13 kommentarer og
1 løsning

Tilføje til felt i database i stedet for at overskrive

Hvordan undgår man at overskrive den eksisterende data i et felt i en access database? Jeg ønsker at tilføje datoer til et felt, men der gemmes kun den sidste.
Avatar billede trekkies Juniormester
05. august 2005 - 17:05 #1
Du laver en update sætning, hvor at du kun sender de oplysninger til databasen som skal ændes.
Avatar billede trekkies Juniormester
05. august 2005 - 17:06 #2
F.eks.
Hvis din Update SQL ser sådan ud:
strSQL = "UPDATE user SET navn='" & Request.Form("navn") & "', mail='" & Request.Form("mail") & "' WHERE ID=" & TRIM(Request.QueryString("id"))

Men nu vil du kun have navn ændret, så skal din Update SQL se sådan ud:
strSQL = "UPDATE user SET navn='" & Request.Form("navn") & "' WHERE ID=" & TRIM(Request.QueryString("id"))
Avatar billede mecenor Nybegynder
05. august 2005 - 17:08 #3
OK, det jeg har brugt hidtil er:
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open "SELECT * FROM Medlemmer where Brugernavn = '"& request.form("brugernavn") &"'", strDSN, 1, 3

...

RS.Fields("IP") = Request.ServerVariables("REMOTE_ADDR")
RS.Update

Hvordan ville en updatesætning til det se ud?
Avatar billede trekkies Juniormester
05. august 2005 - 17:15 #4
Prøv denne sætning:
SQL = "Update Medlemmer SET Brugernavn = '"& request.form("brugernavn") &"' WHERE ID=" & TRIM(Request.QueryString("id"))

Response.Write SQL

'conn.Execute(SQL)
'Set SQL = nothing

Som du kan se har jeg sat ' for de to sidste linier, det betyder at der ikke bliver gemt noget i databasen, når at du ændre dine oplysniger vil du se dine oplysninger på skærmen, hvis du vil gemme oplysninger skal du fjerne ' foran de to sidste linier og sæt en ' foran Response.Write SQL, det skal du gøre for at oplysningerne ikke kan ses af andre mennesker.

Skrive hvis du ikke kan forstå din kode :)
Avatar billede truelz Nybegynder
05. august 2005 - 21:12 #5
Der er to måder hvorpå man kan hente, rette og tilføje data fra/til en database. Du bruger den ene, svarene prøver at hjælpe dig med den anden... Det skal der gå kage i :)
Du skal skrive RS.AddNew umiddelbart før du skriver linjen RS.Fields("IP")...
Så vil du tilføje et felt i bunden af dit recordset.

Tror jeg nok, jeg har ikke testet det.
Avatar billede mecenor Nybegynder
05. august 2005 - 21:42 #6
Ja trekkies, det er det med at forstå sin kode :)
Jeg har rimelig styr på den måde jeg hidtil har anvendt og det virker. Men nu skal jeg ikke bare ændre indholdet i et felt med tilføje til det.
Og derfor truelz, er AddNew ikke hvad jeg er ude efter. Der skal ikke laves et nyt felt, men skrives til i et allerede eksisterede felt.
IP-feltet har 2 allerede IPadr1 og IPadr2 - og når IPadr3 skrives til feltet, skal der være IPadr1, IPadr2 og IPadr3 i det.

Ved skrivning til txt-filer er det måden man åbner connection med tal-variabler:
ForReading 1 Open a file for reading only. You can't write to this file.
ForWriting 2 Open a file for writing.
ForAppending 8 Open a file and write to the end of the file.

Er det det samme her?
Avatar billede trekkies Juniormester
05. august 2005 - 22:50 #7
Jeg kender ikke noget til skrivning af txt filer :(
Men se på denne side under menuen "Text":
http://www.connectionstrings.com/

Nu er jeg vist lidt bagefter :)
Min kode laver ikke et nyt felt, men opdatere det felt som man vælger at rette i.

Hvis jeg kan forstå dig ret, vil du tage IPadr1 og IPadr2, men når at man klikker på "Send knappen" vil du have IPadr1 og IPadr2 lagt sammen med IPadr3 og sendt til feltet IPadr3 i databasen, er det sandt?
Avatar billede mecenor Nybegynder
05. august 2005 - 23:50 #8
Alright, det er blevet lidt rodet.
Jeg vil skrive en brugeres aktuelle IP (eller dato, whatever) til samme felt i databasen, hver gang denne bruger logger ind. Så et felt i access indeholder en masse IP adresser og hver gang en bruger logger ind, bliver den aktuelle IPadr tilføjet feltet med IP adresser i databasen. Så feltet eksistere, der skal ikke laves et nyt. Problemet er at tilføje data til et felt i databasen, uden at slette eksisterende data i det felt.
Glem hvad jeg sagde om text - men tak for linket, det er rart at ha.
Avatar billede mecenor Nybegynder
05. august 2005 - 23:53 #9
Hmm, som du forslår trekkies, så kunne man nok "tage IPadr1 og IPadr2 [...]lagt sammen med IPadr3 og sendt til" et felt i databasen. Men det er da vel ikke nødvendig at trække alt indholdet ud af et felt for at tilføje til det(skrive alt til feltet igen)?
Avatar billede trekkies Juniormester
13. august 2005 - 17:29 #10
Undskyld den lange ventetid.

Jeg har prøvet at lave en funktion som vil opdatere databasen og ikke over overskrive dem, men kan ikke få den til det :(

Se om "truelz" ikke kan hjælpe dig :)
Avatar billede truelz Nybegynder
13. august 2005 - 17:40 #11
Hmm, nu begynder der jo at komme lidt udfordring i det :) Sorry jeg ikke har svaret, men jeg har ikke været så meget ved computeren på det seneste. Jeg kigger lige lidt på det.
Avatar billede truelz Nybegynder
13. august 2005 - 17:44 #12
Nej stop nu, det er jo ikke svært...

RS.Fields("IP") = RS.Fields("IP") & Request.ServerVariables("REMOTE_ADDR")

Er det ikke sådan du mener? Du skal vel have et mellemrum eller lign. imellem, du kan skrive vbcrlf for at få et linjeskift.

RS.Fields("IP") = RS.Fields("IP") & vbcrlf & Request.ServerVariables("REMOTE_ADDR")
Avatar billede mecenor Nybegynder
08. september 2005 - 20:29 #13
Back again.

Det ser godt ud truelz, og jeg tror også det var det trekkies mente (05/08-2005 22:50:09).
Læs nogle svar begge to, så deler jeg point ud.

Tror dog jeg vælger en anden løsning:
Skriver data til et nyt felt hver gang i en anden tabel og laver INNERJOIN med den tabel, der har medlemsnumre. Det giver mulighed for at lege lidt mere med forskellig repræsentation og søgning i data.
Avatar billede truelz Nybegynder
08. september 2005 - 20:32 #14
Jamen så får du et svar herfra :)
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