Avatar billede jmc Nybegynder
15. april 2002 - 13:34 Der er 15 kommentarer og
2 løsninger

Data type mismatch in criteria expression.

kalender.asp?date=April/15/2002

den siger:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/produkter/kalender/kalender.asp, line 31

Jeg har dato sat til datoformat, hvad kan være galt?
Avatar billede doc404 Novice
15. april 2002 - 13:49 #1
det kræver nok lidt af din kode...
Avatar billede a1a1 Novice
15. april 2002 - 13:52 #2
prøv at lave det om til numeriske datoer i amerikansk format (sql standard)

kalender.asp?date=April/15/2002
til
kalender.asp?date=2002-04-15

så vil det sikkert virke....:)
Avatar billede jmc Nybegynder
15. april 2002 - 13:54 #3
head:

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/kalender.asp" -->
<% session.LCID = 1030 %>
<%
Dim bruger__MMColParam
bruger__MMColParam = "1"
if (Request.Cookies("brugernavn") <> "") then bruger__MMColParam = Request.Cookies("brugernavn")
%>
<%
set bruger = Server.CreateObject("ADODB.Recordset")
bruger.ActiveConnection = MM_kalender_STRING
bruger.Source = "SELECT * FROM bruger WHERE brugernavn = '" + Replace(bruger__MMColParam, "'", "''") + "'"
bruger.CursorType = 0
bruger.CursorLocation = 2
bruger.LockType = 3
bruger.Open()
bruger_numRows = 0
%>
<%
Dim rs_arrangement__MMColParam
rs_arrangement__MMColParam = "1"
if (Request.QueryString("date") <> "") then rs_arrangement__MMColParam = Request.QueryString("date")
%>
<%
set rs_arrangement = Server.CreateObject("ADODB.Recordset")
rs_arrangement.ActiveConnection = MM_kalender_STRING
rs_arrangement.Source = "SELECT * FROM kalender WHERE dato = '" + Replace(rs_arrangement__MMColParam, "'", "''") + "'"
rs_arrangement.CursorType = 0
rs_arrangement.CursorLocation = 2
rs_arrangement.LockType = 3
rs_arrangement.Open()
rs_arrangement_numRows = 0
%>
<%
Dim Repeat1__numRows
Repeat1__numRows = -1
Dim Repeat1__index
Repeat1__index = 0
rs_arrangement_numRows = rs_arrangement_numRows + Repeat1__numRows
%>
<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then MM_removeList = MM_removeList & "&" & MM_paramName & "="
MM_keepURL="":MM_keepForm="":MM_keepBoth="":MM_keepNone=""

' add the URL parameters to the MM_keepURL string
For Each Item In Request.QueryString
  NextItem = "&" & Item & "="
  If (InStr(1,MM_removeList,NextItem,1) = 0) Then
    MM_keepURL = MM_keepURL & NextItem & Server.URLencode(Request.QueryString(Item))
  End If
Next

' add the Form variables to the MM_keepForm string
For Each Item In Request.Form
  NextItem = "&" & Item & "="
  If (InStr(1,MM_removeList,NextItem,1) = 0) Then
    MM_keepForm = MM_keepForm & NextItem & Server.URLencode(Request.Form(Item))
  End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
if (MM_keepBoth <> "") Then MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
if (MM_keepURL <> "")  Then MM_keepURL  = Right(MM_keepURL, Len(MM_keepURL) - 1)
if (MM_keepForm <> "") Then MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
  If (firstItem <> "") Then
    MM_joinChar = "&"
  Else
    MM_joinChar = ""
  End If
End Function
%>


linie 31:
rs_arrangement.Open()
Avatar billede doc404 Novice
15. april 2002 - 14:07 #4
Hvis jeg ellers kan tælle så er det i denne linie det går galt:

rs_arrangement.Source = "SELECT * FROM kalender WHERE dato = '" + Replace(rs_arrangement__MMColParam, "'", "''") + "'"

I access skal du omslutte datoer med # - eksempel:

SELECT * FROM Kalender WHERE dato = #1-12-2000#
Avatar billede a1a1 Novice
15. april 2002 - 14:11 #5
doc404 --> I access skal du omslutte datoer med #

NEJ NEJ og atter nej :)
Avatar billede jmc Nybegynder
15. april 2002 - 14:14 #6
***
Dette:
rs_arrangement.Source = "SELECT *  FROM kalender  WHERE dato = #'" + Replace(rs_arrangement__MMColParam, "'", "''") + "'#"

***
giver en fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in date in query expression 'dato = #'5/1/2002'#'.

/produkter/kalender/kalender.asp, line 31

KALENDER VIL IKKE UDSKRIVES, SELV IKKE UDEN EN QUERY STRING ?
Avatar billede a1a1 Novice
15. april 2002 - 14:15 #7
fra http://www.eksperten.dk/spm/198019

sql standard er med 'dimser'.

Hvis du dog har en gammel database driver skal access dog have #havelåger#, men hvis man har en nyere db driver er det ikke nødvendigt med # men helt fint med '
Avatar billede a1a1 Novice
15. april 2002 - 14:17 #8
der skal i hvertfald ikke begge ting på (# og ') :)
lav om til
rs_arrangement.Source = "SELECT *  FROM kalender  WHERE dato = '" + Replace(rs_arrangement__MMColParam, "'", "''") + "'"
Avatar billede jmc Nybegynder
15. april 2002 - 14:49 #9
Det er en ny database!

a1 yeps, det er sådan den ser ud!
rs_arrangement.Source = "SELECT *  FROM kalender  WHERE dato = '" + Replace(rs_arrangement__MMColParam, "'", "''") + "'"

men stadigt fejl i linie 31 som er: rs_arrangement.Open()

jeg er i ultradev og den isger data mitch match uanset om jeg skriver
rs_arrangement__MMColParam = "NULL"
eller
rs_arrangement__MMColParam = "01/02/2002"
eller
rs_arrangement__MMColParam = "01-01-2002"
Avatar billede doc404 Novice
15. april 2002 - 14:49 #10
a1 > så er an vist tilbage hvor han startede...

Sådan bare for sjov - så prøv lige:

rs_arrangement.Source = "SELECT *  FROM kalender  WHERE dato = #" & rs_arrangement__MMColParam & "#"
Avatar billede jmc Nybegynder
15. april 2002 - 14:50 #11
Microsoft OLE DB Provider for SQL Server error '80040e07'

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
Avatar billede jmc Nybegynder
15. april 2002 - 14:55 #12
måske noget:

det må være noget med access datoformat kontra query kontra
thedate = Day(dtmDate)& "/" & Month(dtmDate)& "/" & intYear
som skal skrives rigtigt ???
Avatar billede doc404 Novice
15. april 2002 - 14:58 #13
jamen så er du jo kommet videre... Det må være dit datoformat, der er galt - som du selv er inde på. Men prøv at formatterer det i YYYY/MM/DD
Avatar billede a1a1 Novice
15. april 2002 - 15:03 #14
yyyy-mm-dd

:)
http://www.dbmsmag.com/9707d06.html
Standard ANSI/ISO SQL-92 has a full specification for dates and times that are based on ISO-8601 standards and should have no Year 2000 problems. This standard requires the "yyyy-mm-dd" format and 24-hour time formats based on the UTC (Universal Coordinated Time, formerly the GMT or
Greenwich Mean Time) and has a lot of details in it.
Avatar billede jmc Nybegynder
15. april 2002 - 15:05 #15
hvordan gør jeg dette?
skal det være på datobaseniveau? (den er sat til Kort datoformat 04-05-2002)
Avatar billede jmc Nybegynder
15. april 2002 - 15:06 #16
1.5 hens * 1.5 days * rate = 1.5 eggs
det er alt for konplekst for mig.... ;o)
Avatar billede a1a1 Novice
18. april 2002 - 10:22 #17
du behøver ikke at læse hele hans "tossede" forklaring...
bare..
Standard ANSI/ISO SQL-92 has a full specification for dates and times that are based on ISO-8601 standards and should have no Year 2000 problems. This standard requires the "yyyy-mm-dd" format and 24-hour time formats based on the UTC (Universal Coordinated Time, formerly the GMT or
Greenwich Mean Time) and has a lot of details in it

datoformat skal være
"yyyy-mm-dd"
iflg. Standard ANSI/ISO SQL-92

:)
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