Avatar billede jessbonde Nybegynder
05. februar 2004 - 15:08 Der er 23 kommentarer og
1 løsning

Problem m. Interne forespørgsler (stored procedures)

Når jeg bruger interne forespørgsler i access og skriver mere end 255 tegn til notatfelter med INSERT og UPDATE, så crasher serveren.

Er der nogen der har haft lignende oplevelser og meget gerne et svar på problemet.
Avatar billede trer Nybegynder
06. februar 2004 - 09:33 #1
"Serveren" ? Har du en Access database der er linket til en anden database?

Hvis så, så check lige at både den linkede tabel og den fysiske tabel har samme struktur - at felterne er ens.
Avatar billede hekla Nybegynder
06. februar 2004 - 12:29 #2
Du er vist nødt til at fortælle mere præcist, hvad det er, der ikke fungerer. Lad os se funktionen.
Avatar billede terry Ekspert
06. februar 2004 - 18:34 #3
Avatar billede jessbonde Nybegynder
06. februar 2004 - 19:06 #4
trer< der er kun tale om 1 db, den kører jo på min iis lokalt og når jeg uploader og tester det online, bliver min udbyder ikke så glad.

hekla< den interne forespørgsel kunne f.eks. se sådan ud:

UPDATE tbl_references SET c_Link = [@link], c_LinkText = [@linkText], t_Text = [@text] WHERE u_UID=[@uid];

jeg kalder den fra dokumentet således:

strSQL = "referenceUpdate '" & parseDB(request.form("frmLink")) & "', '" & parseDB(request.form("frmLinkText")) & "', '" & parseDB(request.form("frmText")) & "', '" & request.form("frmUID") & "'"
objConn.execute(strSQL)

SQL'en er rigtig og virker fint når jeg skriver den direkte i dokumentet.
sådan her:

strSQL = "UPDATE tbl_references SET c_Link = '" & parseDB(request.form("frmLink")) & "', c_LinkText = '" & parseDB(request.form("frmLinkText")) & "', t_Text = '" & parseDB(request.form("frmText")) & "' WHERE u_UID = '" & request.form("frmUID") & "'"
objConn.execute(strSQL)

Når jeg kører den som en forespørgsel gemt i db'en, crasher den.
Avatar billede jessbonde Nybegynder
06. februar 2004 - 19:14 #5
Det er notatfeltet der er problemet. Hvis jeg laver det om til et tekstfelt er der ingen problemer, men det kan jo kun holde 255 tegn.
Avatar billede jessbonde Nybegynder
06. februar 2004 - 19:50 #6
Jeg har lavet et eksempel som I er meget velkomne til at prøve kræfter med.
Det ligger her:
http://www.rubiks.dk/db_test.zip

Man genstarter sin iis ved at skrive: iisreset i sin dosprompt
Avatar billede trer Nybegynder
07. februar 2004 - 11:55 #7
Har du checket i Access Hjælp (eller på MSDN) om "stored procedures" i Access understøtter parametre der er længere end 255 tegn?
Avatar billede jessbonde Nybegynder
07. februar 2004 - 14:09 #8
I Access hjælp ser det ud til at man kan: http://www.rubiks.dk/access_hjaelp.gif
Jeg har søgt på MSDN men det er ikke til at finde noget der.
Avatar billede trer Nybegynder
07. februar 2004 - 15:20 #9
Udtræk fra min engelske Access 2002's hjælpefil vedr. parameter queries:

"Specify a data type (data type: The characteristic of a field that determines what type of data it can hold. Data types include Boolean, Integer, Long, Currency, Single, Double, Date, String, and Variant (default).) for the parameters if your parameter query:"

Her er OLE og MEMO (Notat) felttyperne netop ikke nævnt...
Avatar billede overchord Nybegynder
09. februar 2004 - 12:59 #10
Er det evt fordi du bruger en enkelt string til at sende hele SQL statement?
Proev evt at isolere tekst-feltet i SQL-statement i en enkelt string og derefter sammensaet din objconn.execute af flere strings som til sammen udfoerer heler SQL-saetningen (eks. strSQL(1) & strsql(2)).
Avatar billede jessbonde Nybegynder
09. februar 2004 - 16:08 #11
Jeg bruger en enkelt string, men i eksemplet er der jo kun ét felt i db'en der skal opdateres. Hvordan kan jeg dele det mere op.
I eksemplet kalder jeg forespørgslen sådan:

strSQL = "textInsert '" & request.form("frmText") & "'"
objConn.execute(strSQL)

forespørgslen ser sådan ud:
INSERT INTO tbl_Text ( t_Text )
VALUES ([@text]);
(eller prøv eksemplet http://www.rubiks.dk/db_test.zip)

Du må gerne give et eksempel på hvordan jeg kan isolere det.
Avatar billede overchord Nybegynder
10. februar 2004 - 11:08 #12
ok naar du kun har et enkelt felt som du sender igennem string med mere lidt "andet" tekst i strSQL kan det godt blive problematisk.jeg kiggede paa dit eksempel i 06/02-2004 19:06:13.
Jeg ved bare at jeg tidligere slev har haft problemer med at sende memo gennem en SQL-statement der opbygges som en string foerst. Du kan evt proeve at laev en fixed-length string hvor du definerer laengden som eks 50000 (hvis det er nok)
Alternativt proev at saette strSQL som Variant istedet for string.
Avatar billede terry Ekspert
10. februar 2004 - 15:10 #13
overchord>I suggest you take a look at jessbondes previous question on this it may save some time http://www.eksperten.dk/spm/457927
Avatar billede jessbonde Nybegynder
10. februar 2004 - 15:45 #14
Det tidligere sp er irrelevant, da problemet nu er indsnævret til tekstfeltet
Avatar billede overchord Nybegynder
11. februar 2004 - 12:36 #15
har du proevet at dimme strsql som Variant istedet?
Avatar billede jessbonde Nybegynder
11. februar 2004 - 18:58 #16
Jeg ved ikke hvad du mener, kan du give et eksempel
Avatar billede overchord Nybegynder
12. februar 2004 - 10:38 #17
istedet for at sige
Dim strSQL as string

saa proev at bruge
Dim strSQL as variant
Avatar billede jessbonde Nybegynder
12. februar 2004 - 17:11 #18
Det er den ikke meget for:

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0401)
Slut på sætning var ventet
/db_test/Default.asp, line 9, column 32
Dim strDSN, objConn, RS, strSQL as variant
-------------------------------^
Avatar billede overchord Nybegynder
13. februar 2004 - 17:37 #19
hmmm ok er ikke vildt bekendt med asp-siden as tingene og hvordan dimensionering af variable foregaar der.
Kan du lave fixed-length strings i asp?
Hvis du proever med dim strSQL*50000 as string
giver den stadig fejl?
Avatar billede trer Nybegynder
13. februar 2004 - 18:02 #20
I ASP vil alle variabler som regel være af typen VARIANT når man ikke angiver typen.

Derudover er det ikke et problem i ASP at have strenge over 255 tegn, jeg *tror* der kan være en grænse ved 64KB men ellers ikke.
Avatar billede terry Ekspert
13. februar 2004 - 20:16 #21
the problem here isnt how much data you can have in a variant or memo but how it has to be written to an access database from ASP. This is why in the previosu link I suggested the quetsionbe placed there.

I suggest you look at AppendChink and GetChunk Methods!
Avatar billede terry Ekspert
13. februar 2004 - 20:17 #22
AppendChink  = AppendChunk
Avatar billede jessbonde Nybegynder
14. februar 2004 - 02:28 #23
terry< Det ved jeg ikke hvad er, men jeg kan da godt prøve at oprette sp der.
Avatar billede jessbonde Nybegynder
06. juni 2004 - 23:08 #24
sp lukket
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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