Avatar billede george Nybegynder
16. maj 2006 - 19:25 Der 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 ?
Avatar billede jps6kb Novice
16. maj 2006 - 19:39 #1
iDate = ""
            SQL = "UPDATE Vaertskaber SET "
            SQL = SQL & "[Date] = '" & iDate & "' "         
            SQL = SQL & "WHERE ID = " & iID
            Set rs = Conn.Execute(SQL)



Og det er helt uden hænder eller test.
Avatar billede george Nybegynder
16. maj 2006 - 19:45 #2
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
Avatar billede thesurfer Nybegynder
16. maj 2006 - 19:48 #3
iDate = ""
            SQL = "UPDATE Vaertskaber SET "
            SQL = SQL & "[Date] = #" & iDate & "# "         
            SQL = SQL & "WHERE ID = " & iID
            Set rs = Conn.Execute(SQL)
Avatar billede thesurfer Nybegynder
16. maj 2006 - 19:48 #4
Ang "Man bruger da ikke [] i ASP": Det er SQL, og ikke ASP.. :-)
Avatar billede george Nybegynder
16. maj 2006 - 19:53 #5
Ja sorry, det er selvfølgelig rigtig.
Avatar billede thesurfer Nybegynder
16. maj 2006 - 19:54 #6
Test 16/05-2006 19:48:10.. hvis det virker (hvilket jeg regner med at det gør), kan du bare nøjes med acceptere jps6kbs svar.
Avatar billede george Nybegynder
16. maj 2006 - 20:04 #7
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
Avatar billede thesurfer Nybegynder
16. maj 2006 - 20:16 #8
Det er fordi din variabel "iDate" ikke indeholder noget..! :-)

Se første linie:

iDate = ""
            SQL = "UPDATE Vaertskaber SET "
            SQL = SQL & "[Date] = #" & iDate & "# "         
            SQL = SQL & "WHERE ID = " & iID
            Set rs = Conn.Execute(SQL)
Avatar billede george Nybegynder
16. maj 2006 - 20:22 #9
Hvordan skal iDate så se ud hvis jeg vil "slette" inholdet ?
Avatar billede george Nybegynder
16. maj 2006 - 20:37 #10
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
Avatar billede thesurfer Nybegynder
16. maj 2006 - 20:45 #11
Slette indholdet?
Mener du slette hele posten, eller overskrive datoen med en anden dato (eller "", dvs ingenting) ?
Avatar billede george Nybegynder
16. maj 2006 - 20:47 #12
Det sidste, overskrive datoen med ingenting.
Avatar billede thesurfer Nybegynder
16. maj 2006 - 21:35 #13
Det tætteste på ingenting er nok: 01-01-1970 00:00:00

Jeg tror ikke at den godtager ingenting, som en dato.. men du kan ersatte den med en fiktiv dato..
Avatar billede george Nybegynder
16. maj 2006 - 22:04 #14
Det er ikke et datofelt i DB'en, men et tekstfelt.
Avatar billede thesurfer Nybegynder
16. maj 2006 - 22:09 #15
Say what? :-)

Jamen, så skal det jo virke med '' med mindre at "tillad nullængde" er slået fra..
Du skulle gerne kunne bruge:

            SQL = "UPDATE Vaertskaber SET "
            SQL = SQL & "[Date] = ' '"
            SQL = SQL & "WHERE ID = " & iID
            Set rs = Conn.Execute(SQL)

Så skal du bare bruge et iID, der er et tal.. hvis iID er noget tekst, skal det bare være:

            SQL = SQL & "WHERE ID = '" & iID & "'"
Avatar billede george Nybegynder
16. maj 2006 - 22:19 #16
iID kommer fra DB'en som "Autonumber" så det skulle jo være et tal eller Hva' ?
Avatar billede george Nybegynder
16. maj 2006 - 22:24 #17
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

Strange ???
Avatar billede thesurfer Nybegynder
16. maj 2006 - 22:32 #18
Skrive lige navne på dine kolonner, og typen af dem..

Eksempel:
Navn = streng
Alder = tal

osv..
Avatar billede george Nybegynder
16. maj 2006 - 22:36 #19
Alle kolonner er tekst.
Avatar billede george Nybegynder
16. maj 2006 - 22:38 #20
ID = Autonumber
Aar = tekst
Fornavn = tekst
Efternavn = tekst
Date = tekst
Avatar billede thesurfer Nybegynder
16. maj 2006 - 22:41 #21
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
Avatar billede george Nybegynder
16. maj 2006 - 23:12 #22
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.
Avatar billede george Nybegynder
17. maj 2006 - 18:48 #23
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.
Avatar billede george Nybegynder
17. maj 2006 - 18:55 #24
Linje øverst ser sådan ud: SQL = SQL & "[Date] = '\'\" (Håber den skriver det rigtigt)
Avatar billede thesurfer Nybegynder
17. maj 2006 - 19:22 #25
Er du sikker på, at du kigger i den rigtige database?
Smid lige hele koden til den fil du loader..
Avatar billede george Nybegynder
17. maj 2006 - 20:06 #26
Ja jeg er sikker på DB'en

Og koden :
        'Creating the Recordset Object
        Set Conn = Server.CreateObject("ADODB.Connection")

        'Creating a DSN-Less connection to your Database
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../log/vl10.asp")

        'Open your recordset
        Conn.Open strDSN

        '***********************************************************************************************
       
            iDate        = Request.querystring("Date")
           
            'Update record
            iDato        = Request.form("Dato")
            iPerson    = Request.form("person")
           
            'response.Write ("iDate = " & iDate ) & "<br>"
            'response.Write ("iPerson = " & iPerson ) & "<br>"
            'response.Write ("iDato = " & iDato ) & "<br><br>"   
           
            P = INSTR(iPerson, " ")
            L = Len(iPerson)
            'response.Write "P = " & P & "<br>"
            iFornavn = Trim(Left(iPerson,P))
            iEfternavn = Trim(Right(iPerson,(L-P)))
            'response.Write "iFornavn = " & iFornavn & "<br>"                               
            'response.Write "iEfternavn = " & iEfternavn & "<br>"                               

            'Find iID
            P1 = INSTR(iEfternavn, "$")
            L1 = Len(iEfternavn)
            iID = Trim(Right(iEfternavn,(L1-P1)))
           
            'Fjern $ og ID fra efternavn
            W1 = L1-(P1-1)
            xEfternavn = Trim(Left(iEfternavn,(L1-W1)))

            'Delete old date
            iDate = ""
            'SQL = "UPDATE Vaertskaber SET "
            'SQL = SQL & "Date = '" & iDate & "' "           
            'SQL = SQL & " WHERE ID = " & iID
           
            'SQL = "UPDATE Vaertskaber SET "
            'SQL = SQL & "[Date] = " "           
            'SQL = SQL & "WHERE ID = '" & iID & "'"
            'Conn.Execute(SQL)
       
            'Her sker igen ting i db'en
            SQL = "UPDATE Vaertskaber SET "
            SQL = SQL & "[Date] = ' '"
            SQL = SQL & "WHERE ID = " & iID
            Conn.Execute(SQL)
           
            '**************************************
           
            'Insert new date
            'SQL = "UPDATE Vaertskaber SET "
            'SQL = SQL & "Date = '" & iDato & "' "
            'SQL = SQL & " WHERE Fornavn = '" & iFornavn & "' "
            'SQL = SQL & " AND Efternavn = '" & xEfternavn & "' "
           
            'Conn.Execute(SQL)
           

            'response.Write "Insert Dato : " & SQL
           
            'Set rs = Conn.Execute(SQL)
            'response.Write(SQL)

            'Close connection
            'rs.close
            'Set rs = Nothing
            Conn.close
            Set Conn = Nothing
Avatar billede thesurfer Nybegynder
17. maj 2006 - 20:26 #27
Prøv lige det her:

            'Her sker igen ting i db'en
            SQL = "UPDATE Vaertskaber SET "
            SQL = SQL & "[Date] = ' '"
            SQL = SQL & "WHERE ID = " & iID
            Conn.Execute(SQL)
            response.write "SQL: *" & SQL & "*"

Hvad skriver den så?
Avatar billede george Nybegynder
17. maj 2006 - 21:15 #28
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*
Avatar billede thesurfer Nybegynder
17. maj 2006 - 21:45 #29
Ahhh.. der kan man bare se.. der mangler et mellemrum mellem '' og WHERE.. :-)

Rettelsen kommer her:

            'Her sker igen ting i db'en
            SQL = "UPDATE Vaertskaber SET "
            SQL = SQL & "[Date] = ' ' "
            SQL = SQL & "WHERE ID = " & iID
            Conn.Execute(SQL)
            response.write "SQL: *" & SQL & "*"
Avatar billede george Nybegynder
17. maj 2006 - 22:00 #30
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

Linje 55 : xEfternavn = Trim(Left(iEfternavn,(L1-W1)))
Avatar billede george Nybegynder
17. maj 2006 - 22:02 #31
Og nu kommer den ikke, hvad er det der sker ??
Avatar billede thesurfer Nybegynder
17. maj 2006 - 22:04 #32
Du arbejder med noget her:

            'Find iID
            P1 = INSTR(iEfternavn, "$")
            L1 = Len(iEfternavn)
            iID = Trim(Right(iEfternavn,(L1-P1)))
           
            'Fjern $ og ID fra efternavn
            W1 = L1-(P1-1)
            xEfternavn = Trim(Left(iEfternavn,(L1-W1)))

Melder den stadigvæk fejl..?
Avatar billede george Nybegynder
17. maj 2006 - 22:12 #33
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*

Så der ser jo rigtig nok ud ?
Avatar billede thesurfer Nybegynder
17. maj 2006 - 22:19 #34
Ja, det ser rigtigt ud.

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".. :-)
Avatar billede george Nybegynder
17. maj 2006 - 22:28 #35
Nu har jeg rettet kolonnen fra date til dato ( stadig tekstfelt ) og fjernet [] omkring date og ændrede date til dato og får nu fejlen:

ODBC driver does not support the requested properties.
/vl10/admin/Vaertskaber.asp, line 248

Uddrag af koden :
        'Create object for the recordset
        Set rs = Server.CreateObject("ADODB.RecordSet")

        'Create DSN connection
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../log/vl10.asp")

        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM Vaertskaber Where Aar = '" & iAar & "' ORDER BY RIGHT([date],2)"
        'Response.Write(strSQL)
           
        'Open DB
        rs.Open strSQL, strDSN, 1

248 : rs.Open strSQL, strDSN, 1
Avatar billede thesurfer Nybegynder
17. maj 2006 - 22:43 #36
Prøv med:

' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../log/vl10.asp")
Conn.Open DSN

        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM Vaertskaber Where Aar = '" & iAar & "' ORDER BY RIGHT([date],2)"
        'Response.Write(strSQL)

set rs = conn.execute(strSQL)


Se http://www.html.dk/tutorials/asp/lektion19.asp
Avatar billede george Nybegynder
17. maj 2006 - 22:57 #37
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

Hvad mere forventer den ?
Avatar billede thesurfer Nybegynder
17. maj 2006 - 23:01 #38
Variablen "iAar" er sikkert tom.

Lav altid denne test:

response.write "*" & strSQL & "*"
Avatar billede george Nybegynder
17. maj 2006 - 23:02 #39
Åhh... vent lidt. Der skal selvfølgelig stå : ORDER BY RIGHT([dato],2)"  og ikke ORDER BY RIGHT([date],2)"
Avatar billede thesurfer Nybegynder
17. maj 2006 - 23:03 #40
Hvis feltet hedder "dato", behøver du stadigvæk ikke "[]".. :-)
Avatar billede george Nybegynder
17. maj 2006 - 23:17 #41
Det har jeg rettet og del kode på de foregående sider vedr.
17/05-2006 22:43:57 da den kom med nogle fejl af de samme fejl.

Det virker halvt nu, men der sker stadig noget underligt som jeg bliver nødt til at kigge på, dog ingen fejl. Jeg vender tilbage igen i morgen.

Tak for hjælpen indtil videre.
Avatar billede thesurfer Nybegynder
17. maj 2006 - 23:19 #42
Ok.. jeg smutter også snart i seng..
Avatar billede george Nybegynder
18. maj 2006 - 21:57 #43
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 & "' "
           
            Conn.Execute(SQL)

            'Close connection
            Conn.close
            Set Conn = Nothing
Avatar billede thesurfer Nybegynder
18. maj 2006 - 22:24 #44
Definer "et lille problem"..

- Svar
Avatar billede george Nybegynder
20. maj 2006 - 12:30 #45
Jeg har lige uploadet to biller som viser hvad problemet er på http://www.bodygym.dk/test.

Når jeg klikker på datoen på det øverste billede ( 11.09 ) kommer det til at se ud som på billede 2.
Avatar billede george Nybegynder
20. maj 2006 - 12:31 #46
biller = billeder, skulle vist have fulgt lidt bedre med i dansk ;-)
Avatar billede george Nybegynder
20. maj 2006 - 12:35 #47
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.
Avatar billede thesurfer Nybegynder
20. maj 2006 - 17:18 #48
Da du gik fra billede 1 til billede 2, hvad gjorde du i popup-vinduet?
Avatar billede george Nybegynder
20. maj 2006 - 18:31 #49
Jeg ændrede deltager/bruger.

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
           
            'Conn.Execute(SQL)
Avatar billede george Nybegynder
20. maj 2006 - 18:33 #50
SQL'en ser sådan ud : Delete old date. iDate indhold - ' ' : UPDATE Vaertskaber SET Dato = ' ' men som du kan se mangler "Where ID = 'x'
Avatar billede george Nybegynder
20. maj 2006 - 18:40 #51
Sorry! Det er noget være sludder jeg skriver nu jeg sidder og kigger på outputtet. Det er rigtig nok: UPDATE Vaertskaber SET Dato = '' WHERE ID = '68'
Avatar billede thesurfer Nybegynder
20. maj 2006 - 18:45 #52
Så der er ikke noget galt mere..? :-)
Avatar billede thesurfer Nybegynder
20. maj 2006 - 18:50 #53
Indholdet af din IF-sætning ser lidt mærkelig ud:

            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

Hvis iDate IKKE er tom (dvs indeholder noget)
  sæt Dato til ' '
eller
  sæt Dato til iDate (som er tom)
slut Hvis

Så Dato kommer til at være tom, lige meget hvad iDate indeholder..
Forskellen er så, om det skal være '' eller ' ' (med et mellemrum) ..
Avatar billede george Nybegynder
20. maj 2006 - 18:57 #54
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.
Avatar billede thesurfer Nybegynder
20. maj 2006 - 18:58 #55
Så må der være fejl, i det link (eller hvad du nu bruger) der åbner popup'en..
Elelr wa?
Avatar billede george Nybegynder
20. maj 2006 - 19:05 #56
Ja det er rigtigt. Jeg prøver lige at få det rigtige ID med over.
Avatar billede george Nybegynder
20. maj 2006 - 23:58 #57
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.
Avatar billede george Nybegynder
21. maj 2006 - 15:23 #58
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")
           
            'response.Write ("iDate = " & iDate ) & "<br>"
            'response.Write ("iPerson = " & iPerson ) & "<br>"
            'response.Write ("iDato = " & iDato ) & "<br><br>"   
           
            P = INSTR(iPerson, " ")
            L = Len(iPerson)
            'response.Write "P = " & P & "<br>"
            'response.Write "L = " & L & "<br>"
            iFornavn = Trim(Left(iPerson,P))
            iEfternavn = Trim(Right(iPerson,(L-P)))
            'response.Write "iFornavn = " & iFornavn & "<br>"                               
            'response.Write "iEfternavn = " & iEfternavn & "<br>"                               

            'Delete old date
            SQL = "UPDATE Vaertskaber SET "
            If Len(iDate) <> 0 Then
                SQL = SQL & "Dato = '' "
                'response.write "Delete old date. iDate indhold - ' ' : " & SQL & "<br><br>"           
            Else           
                SQL = SQL & "Dato = '" & iDate & "' "
                'response.Write "Længden af iDate er = " & Len(iDate) & "<br><br>"
                'response.write "Delete old date. iDate indhold : " & SQL & "<br><br>"
            End If
              SQL = SQL & " WHERE ID = '" & iID & "'"
            Conn.Execute(SQL)
            response.write "Delete old date : " & SQL & "<br><br>"                   
           
            '**************************************
           
            'Insert new date
            SQL = "UPDATE Vaertskaber SET "
            SQL = SQL & "Dato = '" & iDato & "' "
            SQL = SQL & " WHERE Fornavn = '" & iFornavn & "' "
            SQL = SQL & " AND Efternavn = '" & iEfternavn & "' "
            response.write "Insert new date : " & SQL & "<br><br>"
           
            Conn.Execute(SQL)
           
            'Close connection
            Conn.close
            Set Conn = Nothing
Avatar billede thesurfer Nybegynder
21. maj 2006 - 17:52 #59
Jeg undrer mig lidt over, at du bruger fornavn og efter navn i din WHERE..
Det er mere logisk at bruge ID, da det er unikt.

Hvad gør du, hvis der er 2 der hedder "Hans Hansen"?

Hvis du brugte ID, ville de to "Hans Hansen"'ner have 2 forskellige ID'er.. f.eks. 2 og 5.
Avatar billede george Nybegynder
21. maj 2006 - 18:58 #60
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.
Avatar billede george Nybegynder
21. maj 2006 - 19:28 #61
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&aelig;lg en person" onFocus="this.blur()">V&aelig;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"
Avatar billede george Nybegynder
21. maj 2006 - 19:31 #62
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)"
Avatar billede george Nybegynder
21. maj 2006 - 19:37 #63
Puha,  nu virker det som det skal. Det var en hård nødt at knække.

Tak for hjælpen endnu engang.
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