16. maj 2006 - 19:25Der er
62 kommentarer og 1 løsning
Problemer med UPDATE
Får fejlen: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. /vl10/admin/OpdaterDatoVaertskaber.asp, line 65
Koden: 'Delete old date iDate = "" SQL = "UPDATE Vaertskaber SET " SQL = SQL & "Date = '" & iDate & "' " SQL = SQL & " WHERE ID = " & iID Set rs = Conn.Execute(SQL)
Linje 65 er : Set rs = Conn.Execute(SQL)
Hvis jeg udkommentér "Set rs = Conn.Execute(SQL)" og laver en response.Write "Delete Date : " & SQL & "<br><br>" får jeg outputtet : Delete Date : UPDATE Vaertskaber SET Date = '' WHERE ID = 25
Jeg er ved at stirre mig blind på koden. Er der nogen der kan se hvad der er galt ?
Man bruger da ikke [] i ASP. Jeg prøvede lige alligevel ;-)
Fejl : Microsoft OLE DB Provider for ODBC Drivers (0x80040E07) [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. /vl10/admin/OpdaterDatoVaertskaber.asp, line 66
Det virker desværre ikke, fejl : Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access Driver] Syntax error in date in query expression '##'. /vl10/admin/OpdaterDatoVaertskaber.asp, line 71
Jeg har lige prøve at sætte iDate = "X", men jeg får stadig samme fejlen: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. /vl10/admin/OpdaterDatoVaertskaber.asp, line 65
Prøvede med SQL = SQL & "WHERE ID = " & iID og får fejlen: Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80040E07) [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. /vl10/admin/OpdaterDatoVaertskaber.asp, line 70
Prøvede med SQL = SQL & "WHERE ID = '" & iID & "'" og får fejlen : Error Type: ADODB.Recordset (0x800A0E78) Operation is not allowed when the object is closed. /vl10/admin/OpdaterDatoVaertskaber.asp, line 95
Hehe.. det giver ingen mening, at kalde kolonnen "Date", når alle de andre er på dansk.. :-)
Anyways..
Det her skal virke:
SQL = "UPDATE Vaertskaber SET " SQL = SQL & "[Date] = '' " SQL = SQL & " WHERE ID = " & iID Conn.Execute(SQL)
Læg mærke til: 1) Jeg sætter værdien til '', dvs ingenting. Dette kræver at "tillad nullængde" skal være "slået til". 2) Jeg har fjernet "Set rs =", da det ikke er nødvendigt med UPDATE.. kun SELECT
Nu sker der da noget i DB'en, men jeg tror faktisk at det er koden fra tidligere "16/05-2006 22:09:14". Jeg bliver lige nødt til at checke...vender tilbage i morgen.
Checkede også lige i DB'en. Feltet "Date" har "tillad nullængde" slået til.
Nu har jeg prøvet din kode : 16/05-2006 22:41:06 SQL = "UPDATE Vaertskaber SET " SQL = SQL & "[Date] = '' " SQL = SQL & " WHERE ID = " & iID Conn.Execute(SQL)
men der sker ingen ændringer i DB'en.
Jeg har også prøvet denne kode igen : 16/05-2006 22:09:14 SQL = "UPDATE Vaertskaber SET " SQL = SQL & "[Date] = " " SQL = SQL & "WHERE ID = '" & iID & "'" Conn.Execute(SQL)
Men der sker heller ikke noget.
Puha, det er lige før man ahr lyst til at give op.
Hvis jeg kører den du har lavet ovenfor kommer fejlen : Microsoft OLE DB Provider for ODBC Drivers (0x80040E07) [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. /vl10/admin/OpdaterDatoVaertskaber.asp, line 77
Hvis jeg laver denne her 'Conn.Execute(SQL)
Får jeg : SQL: *UPDATE Vaertskaber SET [Date] = ' 'WHERE ID = 25*
Det havde jeg godt set tidligere, men da du rettede det troede jeg ikke det betød noget.
Nu kommer denne fejl og jeg har bare lavet et mellemrum som jeg skulle : Invalid procedure call or argument: 'Left' /vl10/admin/OpdaterDatoVaertskaber.asp, line 55
For fejlen : Microsoft OLE DB Provider for ODBC Drivers (0x80040E07) [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. /vl10/admin/OpdaterDatoVaertskaber.asp, line 83
83 : Conn.Execute(SQL)
Med 'Conn.Execute(SQL)
ser det sådan ud :SQL: *UPDATE Vaertskaber SET [Date] = ' ' WHERE ID = 13*
Fejlen "Data type mismatch in criteria expression" betyder, at man arbejder med forkerte typer.
F.eks., hvis man prøver på at gemme "abc" i et tal-felt, hvor det kun er tilladt at bruge tallene 0-9 (osv..).
Så du skal lige dobbel -og triple checke typen af feltet "Date".. :-)
Bare så du ved: Hvis du ændrer "Date" til "Dato" i databasen, behøver du ikke "[" og "]".. sålænge at der ikke er andre kolonner, der hedder "Dato".. :-)
Får fejlen : Microsoft OLE DB Provider for ODBC Drivers (0x80040E10) [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. /vl10/admin/Vaertskaber.asp, line 261
thesurfer >> Jeg har siddet og kigget lidt på koden og prøvet forskellige ting og det virker næsten nu, der er et lille problem som jeg skal have løst. Hvis du sender et svar så lad os lukke spørgsmålet for nu, så prøver jeg at se om jeg kan løse det selv, ellers må jeg jo vende tilbage.
1000 tak for hjælpen.
Koden kom til at se sådan ud: 'Delete old date SQL = "UPDATE Vaertskaber SET " If iDate <> "" Then 'SQL = SQL & "Dato = ' ' " SQL = SQL & "Dato = '" & iDato & "' " Else SQL = SQL & "Dato = ' ' " End If 'SQL = SQL & "WHERE ID = " & iID SQL = SQL & "WHERE ID = '" & iID & "'" Conn.Execute(SQL) 'response.write "SQL: *" & SQL & "*"
'**************************************
'Insert new date SQL = "UPDATE Vaertskaber SET " SQL = SQL & "Dato = '" & iDato & "' " SQL = SQL & " WHERE Fornavn = '" & iFornavn & "' " SQL = SQL & " AND Efternavn = '" & xEfternavn & "' "
Arhh.... Skylder dig lige at sige der selvfølgelig kommer et nyt vindue op hvor jeg kan ændre dato og deltager/bruger og når jeg klikke på "Opdatér" kommer det du ser på billede 2.
Jeg har fundet ud af hvad der er galt: Af en eller anden mærkelig grund så mangler den del der hedder SQL = SQL & "WHERE ID = '" & iID & "'" i SQL'en når jeg SQL'en ud på skærmen i øverste del "Delete old date" delen, jeg kan bare ikke forstå hvorfor.
Her er opdateret kode : SQL = "UPDATE Vaertskaber SET " If iDate <> "" Then SQL = SQL & "Dato = ' ' " response.write "Delete old date. iDate indhold - ' ' : " & SQL & "<br><br>" Else 'SQL = SQL & "Dato = ' ' " SQL = SQL & "Dato = '" & iDate & "' " response.write "Delete old date. iDate indhold : " & SQL & "<br><br>" End If SQL = SQL & " WHERE ID = '" & iID & "'" 'Conn.Execute(SQL) response.write SQL & "<br><br>"
'**************************************
'Insert new date SQL = "UPDATE Vaertskaber SET " SQL = SQL & "Dato = '" & iDato & "' " SQL = SQL & " WHERE Fornavn = '" & iFornavn & "' " SQL = SQL & " AND Efternavn = '" & xEfternavn & "' " response.write "Insert new date : " & SQL
Jo, det er fordi jeg tager den forkerte ID med over når jeg prøver at "slette" den gamle dato. ID '68' er på den bruger jeg lige har valgt når jeg har mit popup vindue oppe og det skal det jo ikke være. Det skal være på den "gamle" dato hvis du forstår hvad jeg mener.
hmmm... Jeg har fået ID'et med over for længe siden, men men men der er stadig noget galt. Jeg vender stækt tilbage i morgen og kigger videre på problemet.
Jeg har opdateret http://www.bodygym.dk/test. Når jeg klikker på datoen 10.10 og ændre bruger så kommer det til at se lidt mystisk. Se billede 2.
Hvis fornavn og efternavn består af to navne, altså uden mellemnavn, som f.eks. "Svend Kristiansen" så virker det når man ændre dato. Hvis der er et mellemnavn som i "Henrik Svend Sørensen" så slettes den gamle dato, men der indsættes ingen ny.
her er den nye opdateret kode: iDate = Request.querystring("Date") iID = Request.querystring("ID")
response.write "iID er = " & iID & "<br>"
'Update record iDato = Request.form("Dato") iPerson = Request.form("Person")
Ja det kan jeg godt forstå, det er ikke helt normalt at gøre det på den måde, det var kun fordi jeg ved der ikke er 2 der kommer til at hedde det sammme, da det er en lille gruppe af mennesker.
Jeg har jo ID'et på den nye, så jeg prøver lige at lave det om.
Kan du se hvorfår jeg får denne fejl ? Microsoft VBScript runtime (0x800A0005) Invalid procedure call or argument: 'Left' /vl10/admin/RetDatoVaertskaber.asp, line 91
Koden ser sådan ud : <select name="person"> <option selected="Vælg en person" onFocus="this.blur()">Vælg en person <% For i = 0 to Max Person = rsarr(2,i) & " " & rsarr(3,i) & "$" & rsarr(0,i) Person = rsarr(2,i) & " " & rsarr(3,i) P = INSTR(Person, "$") L = Len(Person) W = L-(P-1) xPerson = Trim(Left(Person,(L-W))) %> <option value="<%=Person%>" Class=""><%=xPerson%> <% Next %> </select>
Variablen Person vil se sådan ud : Person = "Hans Hansen$35"
Sorry, jeg er ved stirre mig blind på den kode. Det er linjen "Person = rsarr(2,i) & " " & rsarr(3,i)" der skal se således ud "xPerson = rsarr(2,i) & " " & rsarr(3,i)"
Puha, nu virker det som det skal. Det var en hård nødt at knække.
Tak for hjælpen endnu engang.
Synes godt om
Ny brugerNybegynder
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.