Avatar billede fastpoint Nybegynder
10. oktober 2004 - 14:24 Der er 25 kommentarer og
1 løsning

Kan ikke updatere database korrekt

Hejsa

Er stødt på et nyt underligt problem!
Jeg kan godt markere og kopire en hel tekst og sætte det ind i min database ved hjælp af asp. men hvis jeg vil updatere (dvs rette) i det felt igen via asp så gider den ikke.
jeg bruger denne kode

SQLstringK="UPDATE tabel SET title='"&Request.QueryString("tekst")&"',

det virker godt hvis jeg sletter så meget af teksten så der næsten ikke er mere tilbage... i min database er feltet tekst af datatypen memo.

Har i nogen ideer?
Avatar billede jacand Nybegynder
10. oktober 2004 - 21:40 #1
Har du ikke en datatypen der hedder text?
Avatar billede fastpoint Nybegynder
10. oktober 2004 - 22:27 #2
jammen hvis jeg laver den om til datatypen tekst kan den så overhovedet skrive mere end en linie? kan man godt skrive en a4 side i datatypen tekst?
Avatar billede sho Nybegynder
10. oktober 2004 - 23:17 #3
Er det ikke noget med, at der er en begrænsning på mængden af data, som du kan overføre med en query, så du måske skulle poste en form i stedet for?

Har du prøvet at udskrive indholdet af din query på skærmen, inden du hælder den i databasen?
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 00:03 #4
Jeg kan godt udskrive indholdet på skærmen... men hvis jeg ændre i det og trykke gem så reagere den ikke. Så bliver jeg nød til at slette det meste af teksten... forstår bare ikke hvorfor jeg så kan tilføje teksten i databasen men ikke rette i den... nogen ideer?
Avatar billede sho Nybegynder
11. oktober 2004 - 07:04 #5
Du skriver, at feltet 'tekst' er et memo-felt, men du opdaterer jo teksten i feltet 'title'? Hvad sker der, hvis du lægger indholdet af din querystring i en variabel først?

strTekst = request.querystring("tekst")
SQLstringK = "UPDATE tabel SET title='" & strTekst & "'"
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 10:19 #6
ops.. begge skal selvfølgelig hedde tekst... og det er et memofelt... jeg prøver lige din kode engang og ser om det hjælper på det
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 10:36 #7
Sho:

Din kode giver ingen fejl, men siden reagere stadig ikke når man trykker update hvis der står for meget tekst i feltet. kan man gøre det på en anden måde?
Avatar billede sho Nybegynder
11. oktober 2004 - 10:42 #8
Det skal virke... Hvilken database bruger du?
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 10:50 #9
Jeg bruger access database... hmm kan lige give dig lidt mere af koden kan være du kan se noget galt i det..


<%Dim ID,opslag

id=Request.QueryString("ID")

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("database.mdb")

if request.querystring("knap")<>"Ret" then

    SQLstringK="SELECT * FROM data WHERE id="&id
    SET opslag=Connection.Execute(SQLstringK)
else
    strTekst = request.querystring("tekst")
   
    SQLstringK="UPDATE data SET title='"&Request.QueryString("title")&"', tekst='" & strTekst & "', citat1='"&Request.QueryString("citat1")&"', citat2='"&Request.QueryString("citat2")&"', citat3='"&Request.QueryString("citat3")&"', citat4='"&Request.QueryString("citat4")&"', citat5='"&Request.QueryString("citat5")&"' , citat6='"&Request.QueryString("citat6")&"' WHERE id="&id
    Connection.Execute(SQLstringK)
    response.buffer=true
    response.clear
    response.redirect "oversigt.asp"
    response.end

end if
    %>


Det er så tekst som skal sættes ind...
Avatar billede sho Nybegynder
11. oktober 2004 - 10:58 #10
Næh, det skulle være godt nok. Hvordan er strukturen i tabellen data? Hvilke felter?
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 11:04 #11
ID|title|email|name|ip|kl|dato|hits|godkendt|forfatter|tekst|citat1|->til citat6

Det er så i tekst problemet kommer.

Det giver bare ikke mening at jeg kan tilføje en tekst som er lang men ikke rette i den.. når jeg tilføjer en tekst bruger jeg
Conn.Execute "INSERT INTO
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 11:04 #12
bruger ikke alle felter i databasen forresten
Avatar billede sho Nybegynder
11. oktober 2004 - 11:08 #13
Nej, du har ret, det giver ikke mening. Må jeg se dit INSERT-statement?
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 11:11 #14
Tænker du på denne her

Conn.Execute "INSERT INTO data (title,tekst,hits,godkendt,kl,dato,ip, citat1, citat2, citat3, citat4, citat5, citat6) VALUES ('" & Request("title") & "','" & Replace (Request("tekst"), "'", "''") & "','0','1','" & time() & "','" & date() & "','" & Request("REMOTE_ADDR") & "','" & Request("citat1") & "', '" & Request("citat2") & "','" & Request("citat3") & "','" & Request("citat4") & "','" & Request("citat5") & "','" & Request("citat6") & "' )"
Avatar billede sho Nybegynder
11. oktober 2004 - 11:34 #15
Jeg giver op! Jeg kan ikke få øje på, at der skulle være nogle fejl i det.
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 11:43 #16
så vi to hehe... kan det være serveren som ikke kan håndtere det? vil virke lidt mærkeligt
Avatar billede sho Nybegynder
11. oktober 2004 - 12:12 #17
Det kan næsten ikke være serveren, når INSERT virker og UPDATE ikke gør.

Har du prøvet at poste det med en form? Du kan bare lave hidden fields til ID m.v.
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 12:15 #18
Jeg overvejer om man ikke bare skal bruge den form jeg tilføjer tingene med igen men hvor man lige laver sine ændringer.. det gør selvfølgelig at man har to af det samme næsten men mon ikke man kan lave en automatisk delete på det gamle id så?
Avatar billede sho Nybegynder
11. oktober 2004 - 12:20 #19
Du kan godt bruge den samme form, men kunne jo sættte et parameter på din form-action, der fortæller, om det er en ny eller en rettet.

<form .... action="fil.asp?action=new"> eller <form .... action="fil.asp?action=update">

Så kan du i fil.asp teste på, om request.querystring("action") er lig det ene eller det andet.
Avatar billede sho Nybegynder
11. oktober 2004 - 16:04 #20
Jeg kom lige til at tænke på...

Har du prøvet at printe din SQL-sætning med en responsde.write og så køre den som en forespørgsel direkte i Access? Hvis du laver en ny forespørgsel i SQL-visning, så kan du designe din SQL-sætning og se, hvad der sker direkte i databasen.
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 17:14 #21
Jeg er ikke så ekspert så er ikke helt med hehe... til dit andet forslag ovenover
skal jeg så bruge enten den ene eller begge to?  der hvor du skriver eller
Avatar billede sho Nybegynder
11. oktober 2004 - 20:37 #22
Hvis du i begyndelsen af din kode sætter en variabel til at være lig med "new", og hvis brugeren vælger ar rette, ændrer du den til at være lig med "update". Noget i retning af (i pseudokode) i den fil, der indeholder formularen:

if RET then
  strVariabel = "update"
else
  strVariabel = "new"
end if

I din form-definiton skriver du så <form name='test' ... action='fil.asp?action=<%=strVariabel%>'>

Så får du overført via en querystring, om brugeren er ved at oprette en ny eller opdatere en eksisterende.

Så kan du overføre det, der skal skrives i databasen, via en formular, som du kan udlæse med request.form("variabel") på samme måde som du gjorde med request.querystring(""), men formen kan overføre flere data.

Men en idé var nok at begynde med at prøve at lave det samme SQL-statement direkte i Access, så du kan se, hvad der sker i Access, når du afvikler det.
Avatar billede fastpoint Nybegynder
12. oktober 2004 - 00:38 #23
Jeg vil gemme dine forslag i et dokument til senere... forløbig har jeg som løsning valgt en lidt primitiv en hehe... hvis man foretager nogen ændringer skal man lige trykke på et link som sletter det gamle data... og så bliver det så tilføjet på ny: ) bedre end ingenting
Avatar billede sho Nybegynder
13. oktober 2004 - 08:04 #24
Okay, men husk at lukke spørgsmålet.
Avatar billede fastpoint Nybegynder
13. oktober 2004 - 10:16 #25
Du kan ligge et svar så får du pointene for besværet
Avatar billede sho Nybegynder
13. oktober 2004 - 10:17 #26
Takker! :-)
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