Avatar billede jessbonde Nybegynder
28. januar 2004 - 03:16 Der er 22 kommentarer og
1 løsning

Vrøvl med forespørgsel

Jeg har en forespørgsel i min access db som virker ca. 3 ud af 4 gange.

Hvis jeg afvikler den flere gange efter hinanden og pludselig siger den:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en ugyldig SQL-sætning. "DELETE", "INSERT", "PROCEDURE","SELECT" eller "UPDATE" var ventet.

Men andre gange virker den fint.
Hvis jeg kører SQL'en direkte fra dokumentet virker det hver gang

Min forespørgsel ser således ud:
UPDATE tbl_references SET c_Link = [@link], c_LinkText = [@linkText], t_Text = [@text]
WHERE u_UID=[@uid];

og jeg kalder den således:
strSQL = "referenceUpdate '" & parseDB(request.form("frmLink")) & "', '" & parseDB(request.form("frmLinkText")) & "', '" & parseDB(request.form("frmText")) & "', '" & request.form("frmUID") & "'"
Avatar billede terry Ekspert
28. januar 2004 - 18:53 #1
I dont think this is an Access problem but a problem from your web application!
Avatar billede jessbonde Nybegynder
28. januar 2004 - 19:09 #2
Jeg har prøvet både lokalt og online
Avatar billede terry Ekspert
28. januar 2004 - 19:19 #3
But the code is still th same isnt it?

Try and write the FULL sql to the screen or a file and make sure it isnt getting changed for some reason. The error indicates that there is an error in SQL so I would concentrate on that!
Avatar billede jessbonde Nybegynder
28. januar 2004 - 19:30 #4
Det kan jeg godt prøve, men jeg får jo ikke sql'en udskrevet så.
Kun mit "kald" og de parametre jeg sender med.
Avatar billede terry Ekspert
28. januar 2004 - 19:37 #5
So you have NO guaranty that the SQL is correct! Just before the SQL gets executed is it not possible to somehow see the FULL SQL? If you cant see the SQL then how do you know it is correct?
Avatar billede jessbonde Nybegynder
28. januar 2004 - 19:38 #6
Når jeg får fejlen vil den slet ikke skrive sql'en ud
Avatar billede terry Ekspert
28. januar 2004 - 19:47 #7
You need to do this just before you execute the SQL!
Avatar billede jessbonde Nybegynder
28. januar 2004 - 19:48 #8
Jeg forstår godt hvad du mener, men hvordan kan sql'en være rigtig nogle gange og forkert andre gange, hvis parametrene er fuldstændig ens hver gang.
Avatar billede jessbonde Nybegynder
28. januar 2004 - 19:51 #9
Jeg har prøvet at skrive det ud. Når jeg gør det online vil den gerne skrive ud selvom jeg får fejlen.
Men kun kaldet af forespørgslen + parametrene. Jeg ved ikke hvordan jeg skal skrive selve SQL'en i forespørgslen ud
Avatar billede terry Ekspert
28. januar 2004 - 20:03 #10
jessbonde>Are yousaying that the SQL is NOT CORRECT every time? If so, this confirms that it is NOT Access but something which is happening in you ASP code!

I cant see all of your code so I cant say how to see it. I only know that somewhere in your program you MUST be making some connection to your Access database and SOMEHOW sending the SQL to the database!

Maybe Conn.Execute or something!

It is here, just before you send the SQL to the dB that you can for example use

responce.Write.... so that you can see the SQL!

Who has made the program? If you have made it then you must know where the SQL is performed.


Do you have a query in SQL where you are sending parameters to the dB? Make sure that you close your connection between calls and re-open it!
Avatar billede terry Ekspert
29. januar 2004 - 20:00 #11
jessbonde>Hows it going here?
Avatar billede jessbonde Nybegynder
29. januar 2004 - 22:20 #12
Man kan åbenbart ikke skrive sql'en fra en forespørgsel ud.
Men jeg har fundet ud af at jeg ikke er den eneste der har problemer med UPDATE i access forespørgsler.
Avatar billede terry Ekspert
30. januar 2004 - 18:21 #13
I dont think this isnt an Access problem but a problem with the drivers you are using.
Avatar billede jessbonde Nybegynder
30. januar 2004 - 23:45 #14
"I dont think this isnt"?
Jeg er ikke sikker på jeg forstår hvad du mener
Lad mig minde dig om at den også crasher når jeg kører det online.
SQL'en er rigtig nok. Der sker et eller andet i db'en når jeg kører min update forespørgsel.
Hvilke drivere tænker du på?
Avatar billede jessbonde Nybegynder
31. januar 2004 - 01:36 #15
Jeg har fundet ud af at problemet opstår fordi et af felterne er et notat felt.
Jeg har prøvet at opdatere det både først og sidst men det er det samme.
Avatar billede terry Ekspert
31. januar 2004 - 10:22 #16
If you think that the problem is because of a memo (notat) field then I suggest you place a question under ASP! I'm not too sure how to write momo fields to an Access database from a WEB application. You have to remember that these fields can hold great amounts of data!
Avatar billede jessbonde Nybegynder
31. januar 2004 - 21:27 #17
Ikke fordi jeg vil sige dig imod men jeg mener nu det er et database spørgsmål.
SQL'en ligger jo internt i databasen og er efter al sansynlighed rigtig.
Der må være andre der har haft problemer med at opdatere et notatfelt med en intern forespørgsel.

Som jeg sagde tidligere er der ingen problemer når jeg skriver SQL'en direkte i mit dokument.
Avatar billede terry Ekspert
01. februar 2004 - 10:56 #18
jessbonde>I agree that his is a database question but the reason why I suggested you try getting help in ASP is because in Access (Office Access) it is not necessary to use parameter queries to update a memo field. Updating a memo field from an ASP page is different so it is more likely that other people in ASP category will have experienced this problem!

I still havent seen any code as to how you send these paramameters to the Access database but using ADO it is necessary to use AppendChunk to append small parts of a binary file (memo). But again in Access this is NOT necessary so it isnt easy to give help on this!
Avatar billede jessbonde Nybegynder
01. februar 2004 - 13:54 #19
Her er min funktion der kalder forespørgslen og sender parametre:
(jeg har skiftet frem og tilbage mellem kald af forespørgsel og SQL skrevet direkte i dokumentet)

function updateReference
    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") & "'"
    'strSQL = "referenceUpdate '" & parseDB(request.form("frmLink")) & "', '" & parseDB(request.form("frmLinkText")) & "', '" & parseDB(request.form("frmText")) & "', '" & request.form("frmUID") & "'"
    set RS = exec(strSQL)
end function


funktion der åbner db:

function openDBFront
    strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("../db/vmcyklen.mdb")
    Set objConn = server.createObject("ADODB.Connection")
    objConn.Open strDSN
end Function


funktion der eksekverer SQL:

function exec(strSQL)
    set exec = objConn.execute(strSQL)
end function
Avatar billede terry Ekspert
01. februar 2004 - 17:15 #20
jessbonde>I knw very little abouy ASP but this doesnt seem correct to me

function exec(strSQL)
    set exec = objConn.execute(strSQL)
end function

Shouldnt it be somethink like (without the set)?

function exec(strSQL)
  exec = objConn.execute(strSQL)
end function

and you also said that you couldnt see the SQL

why cant you use

function exec(strSQL)
    responce.write strSQL
    exec = objConn.execute(strSQL)
end function
Avatar billede jessbonde Nybegynder
01. februar 2004 - 22:31 #21
Det har jeg prøvet, det gør ingen forskel.
Som jeg har prøvet at forklare dig, kan jeg ikke skrive selve SQL'en ud, når den kaldes i en forespørgsel.
Resultatet vil være:
referenceUpdate 'http://test', 'test', 'test', '{D1310D01-1802-4A60-8013-7DBA53AF6957}'
Avatar billede terry Ekspert
03. februar 2004 - 17:02 #22
jessbonde>I dont think we seem to be getting ANYWHERE with this question, first you say on ething and then another and as I cant see WHAT you have other than what you write here it isnt easy! So Ithink it best we (I) stop here!
Avatar billede jessbonde Nybegynder
04. februar 2004 - 03:03 #23
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