/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Brug af '
Fra : Martin_P


Dato : 25-09-02 12:37

Hvordan bærer man sig ad med følgende scenario:

Jeg har et <textarea> felt hvori folk kan taste noget tekst. Denne
tekst bliver så sendt til en database med Insert Into - MEN...

hvordan sikrer jeg mig, hvis nu en bruger f.eks. skriver - You're on
the right track

Det ' i you're gør at siden fejler - how to get past that?

eg har siddet og prøvet at kodet mig ud af det i 2 timer nu, og er
ikke kommet et skridt videre, såeh - hilfe!!

Martin_P

 
 
Jakob Møbjerg Nielse~ (25-09-2002)
Kommentar
Fra : Jakob Møbjerg Nielse~


Dato : 25-09-02 12:47

Martin_P wrote:
> Det ' i you're gør at siden fejler - how to get past that?


Alle ' skal udskiftes med '':

replace(strengen, "'", "''")

--
Jakob Møbjerg Nielsen | "Five exclamation marks, the
jakob@dataloger.dk | sure sign of an insane mind."
http://www.jakobnielsen.dk/ | -- Terry Pratchett, Reaper Man
Jeg søger et fuldtidsjob som programmør. Tag et kig på hjemmesiden.



Jens Gyldenkærne Cla~ (25-09-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-09-02 13:05

Martin_P skrev:

> hvordan sikrer jeg mig, hvis nu en bruger f.eks. skriver -
> You're on the right track
>
> Det ' i you're gør at siden fejler - how to get past that?

Jakob har svaret på hvad du skal gøre for at få det til at virke
med en INSERT-sætning. Jeg vil blot tilføje at din INSERT også vil
fejle hvis indholdet i tekstareaet bliver for langt (jeg kan ikke
huske hvad grænsen er, men du kan hurtigt nå op på den). Det er
også tænkeligt at et linjeskift i feltet vil resultere i en fejl
når du bruger INSERT.

Alle disse problemer kan du slippe for ved at benytte en cursor til
at indsætte data. Lav et recordset svarende til når du vil hente
data fra tabellen, åbn det og brug metoden .AddNew til at indsætte
din nye post.

Eks:

' Lav et recordset med tilgang til den ønskede tabel
' Jeg skal ikke bruge nogle poster, så jeg sætter en
' WHERE-betingelse der er åbenlyst falsk.

Set RS = Conn.Execute("SELECT * FROM dinTabel WHERE 1 = 2")

' Tilføj en ny post
RS.AddNew

' Sæt værdien feltvis. Det er ikke nødvendigt at sikre sig mod
' enkeltstående anførselstegn her.

RS("ditFelt") = Request.Form("textareaFelt")

' Gem posten
RS.Update

' Luk og sluk
RS.close
Set Rs = nothing

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Martin_P (25-09-2002)
Kommentar
Fra : Martin_P


Dato : 25-09-02 13:56


>Jakob har svaret på hvad du skal gøre for at få det til at virke
>med en INSERT-sætning. Jeg vil blot tilføje at din INSERT også vil
>fejle hvis indholdet i tekstareaet bliver for langt (jeg kan ikke
>huske hvad grænsen er, men du kan hurtigt nå op på den). Det er
>også tænkeligt at et linjeskift i feltet vil resultere i en fejl
>når du bruger INSERT.
not! for tekst-feltet i databasen er sat til NOTAT, så det giver vist
rigeligt til de tekstfelter jeg skal bruge

>Alle disse problemer kan du slippe for ved at benytte en cursor til
>at indsætte data. Lav et recordset svarende til når du vil hente
>data fra tabellen, åbn det og brug metoden .AddNew til at indsætte
>din nye post.
>
>Eks:
>
>' Lav et recordset med tilgang til den ønskede tabel
>' Jeg skal ikke bruge nogle poster, så jeg sætter en
>' WHERE-betingelse der er åbenlyst falsk.
>
>Set RS = Conn.Execute("SELECT * FROM dinTabel WHERE 1 = 2")
>
>' Tilføj en ny post
>RS.AddNew
>
>' Sæt værdien feltvis. Det er ikke nødvendigt at sikre sig mod
>' enkeltstående anførselstegn her.
>
>RS("ditFelt") = Request.Form("textareaFelt")
>
>' Gem posten
>RS.Update
>
>' Luk og sluk
>RS.close
>Set Rs = nothing
_okay_ - det der skal ihvertfald prøves det er helt sikkert!!!

Mange tak!
Martin_P

Jens Gyldenkærne Cla~ (25-09-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-09-02 14:19

Martin_P skrev:

>> Det er også tænkeligt at et linjeskift i feltet
>> vil resultere i en fejl når du bruger INSERT.

> not! for tekst-feltet i databasen er sat til NOTAT, så det
> giver vist rigeligt til de tekstfelter jeg skal bruge

Det er ikke et spørgsmål om Access har plads nok i et notatfelt
(det er ganske rigtigt ikke noget problem). Men problemet opstår
fordi Access med en INSERT-sætning skal kunne forstå det som en
helhed.

Prøv at se om du kan lave en INSERT med følgende sætning:

INSERT INTO dinTabel (felt1, felt2) VALUES (1, "ny linje
her og her kommer der flere
nye linjer
og lige en til før vi slutter denne lange tekst")

Jeg tror ikke Access kan håndtere det - men jeg er dog ikke sikker.


[snip - cursoreksempel]

> _okay_ - det der skal ihvertfald prøves det er helt sikkert!!!

Det vil jeg under alle omstændigheder foreslå dig.

PS: Dine kommentarer vil være lettere at finde hvis du citerede
lidt mindre. Se evt. linket i min signatur.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Lars Hoffmann (25-09-2002)
Kommentar
Fra : Lars Hoffmann


Dato : 25-09-02 20:39

Jens Gyldenkærne Clausen escribió / skrev

> Jeg tror ikke Access kan h†ndtere det - men jeg er dog ikke sikker.

Jojo, der er ingen problemer.

Med venlig hilsen
Lars Hoffmann

Jesper Nielsen (25-09-2002)
Kommentar
Fra : Jesper Nielsen


Dato : 25-09-02 20:26

> Jakob har svaret på hvad du skal gøre for at få det til at virke
> med en INSERT-sætning. Jeg vil blot tilføje at din INSERT også vil
> fejle hvis indholdet i tekstareaet bliver for langt (jeg kan ikke
> huske hvad grænsen er, men du kan hurtigt nå op på den). Det er
> også tænkeligt at et linjeskift i feltet vil resultere i en fejl
> når du bruger INSERT.

Det har jeg aldrig oplevet... Jeg arbejder med MSSQL, og har INSERT'et flere
megabytes i et text felt.

Ej heller har jeg oplevet problemer med at indsætte linieskift (vbCrLf.)

--
Mvh. Jesper



Lars Hoffmann (25-09-2002)
Kommentar
Fra : Lars Hoffmann


Dato : 25-09-02 20:41

Jesper Nielsen escribió / skrev

> Det har jeg aldrig oplevet... Jeg arbejder med MSSQL, og har
> INSERT'et flere megabytes i et text felt.

MSSQL kan indsætte op til 2GB i et tekstfelt (omend det godt kan tage
lidt tid ), Access er langt mere begrænset og kan max indsætte
65,535 tegn i et memo felt.
Med venlig hilsen
Lars Hoffmann

Klaus Ambrass (26-09-2002)
Kommentar
Fra : Klaus Ambrass


Dato : 26-09-02 07:52

Lars Hoffmann <lars@hoffmann.ac> wrote in
news:Xns92944D6A99E3Elarshoffmannac@130.225.247.90:

> Jesper Nielsen escribió / skrev
>
>> Det har jeg aldrig oplevet... Jeg arbejder med MSSQL, og har
>> INSERT'et flere megabytes i et text felt.
>
> MSSQL kan indsætte op til 2GB i et tekstfelt (omend det godt kan tage
> lidt tid ), Access er langt mere begrænset og kan max indsætte
> 65,535 tegn i et memo felt.
> Med venlig hilsen
> Lars Hoffmann

Hvis din server benytter MDAC <2.4 (tror jeg nok) så kan du faktisk kun
overføre 255 tegn. Det er en bug i ODBC-driveren til Access. I de seneste
MDAC findes ODBC-drivere til Access ikke længere, så man skal hente en
JetEngine 4 ned.

--

Klaus Ambrass
IT - Storstrøms Amt
kam@it.stam.dk

Peter Lykkegaard (26-09-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 26-09-02 20:28

Som svar på skriblerier forfattet af Klaus Ambrass

> I de seneste MDAC findes ODBC-drivere til Access ikke længere,
> så man skal hente en JetEngine 4 ned.

Tænker du på OleDB?

ODBC/Access virker fortrinligt i de seneste versioner af MDAC
OleDB er bare bedre

mvh/Peter Lykkegaard



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste