Hi. I was doing a simple query that resulted in a "data type mismatch in criteria expression" error. Hunting around for the source I realized that when I attempt to sort a column of numerical data a hidden decimal point is inserted and what should be an order of : 45, 10, 9, 2, becomes this order: 9, 45, 2, 10 (i.e., 9, 4.5, 2, 1.0)
Ive been working at this problem for a while now and I can't figure it out. I have a table full of Work Orders, and on the form for inputing the Work Order data, there is a field for the date that the WO was received, and the date it is wanted. There is also a field that tells if this was a rush job (Yes/No) field.
I need to make a query that will grab all the rush jobs, and sort by how many days were between the date received and date wanted. This would be easy, just subtracting the dates, but I need to have it not include weekends and holidays. I found an algorithm to do that and it seems to work well. However, when I run the query, it gives me a "Data type mismatch in criteria expression." error. At this point, to debug it, I put in a message box to see if it processes any entries. It does process them one at a time, but once it gets to a certain point I get that error. I have checked all the dates, making sure they are all valid and they are. I'm just really stumped here. Here is the code for my query:
SELECT [Usable Orders].[AI Number], [Usable Orders].[District Name], [Usable Orders].[CCM Name], [Usable Orders].[8255 Received], [Usable Orders].[Date Wanted], [Usable Orders].Rush, WorkingDays2([8255 Received],[Date Wanted],[AI Number]) AS [Working Days] FROM [Usable Orders] GROUP BY [Usable Orders].[AI Number], [Usable Orders].[District Name], [Usable Orders].[CCM Name], [Usable Orders].[8255 Received], [Usable Orders].[Date Wanted], [Usable Orders].Rush HAVING ((([Usable Orders].Rush)="Yes") AND ((WorkingDays2([8255 Received],[Date Wanted],[AI Number]))<=10));
and here is the code for my WorkingDays2 (counts all working days excluding holidays) the AINumber field I put in for debugging purposes to see which entries were being processed.
Public Function WorkingDays2(StartDate As Date, EndDate As Date, AINumber As String) As Integer '................................................. ................... ' Name: WorkingDays2 ' Inputs: StartDate As Date ' EndDate As Date ' Returns: Integer ' Author: Arvin Meyer ' Date: May 5,2002 ' Comment: Accepts two dates and returns the number of weekdays between them ' Note that this function has been modified to account for holidays. It requires a table ' named tblHolidays with a field named HolidayDate. '................................................. ................... On Error GoTo Err_WorkingDays2
Dim intCount As Integer Dim rs As Object Dim stSql As String Dim con As Object Dim Message As String
If StartDate > EndDate Then MsgBox "Start Date is After End Date" WorkingDays2 = -1 GoTo Exit_WorkingDays2 End If
stSql = "SELECT [HolidayDate] FROM tblHolidays"
'StartDate = StartDate + 1 'To count StartDate as the 1st day comment out the line above
intCount = 0 Set con = Application.CurrentProject.Connection Set rs = CreateObject("ADODB.Recordset") rs.Open stSql, con, 1 ' 1 = adOpenKeyset 'MsgBox "Today is " & Weekday(StartDate) & ", " & StartDate & "Opening AI Number is " & AINumber Do While StartDate <= EndDate rs.Find "[HolidayDate] = #" & StartDate & "#" If Weekday(StartDate) <> vbSunday And Weekday(StartDate) <> vbSaturday Then If rs.EOF Then intCount = intCount + 1 ' Message = Message & " and today is a work day." End If Else ' Message = Message & "and today is not a work day." End If ' MsgBox Message 'rs.MoveNext StartDate = StartDate + 1 Loop 'MsgBox "Closing AI Number " & AINumber & "Count is " & intCount 'MsgBox "After Loop count is " & intCount & " and today is " & StartDate WorkingDays2 = intCount 'MsgBox "Date is " & StartDate & "AI Number is " & AINumber & " and there were " & intCount & " days." Exit_WorkingDays2: Exit Function
Err_WorkingDays2: Select Case Err
Case Else MsgBox Err.Description & "Start date is " & StartDate & "End Date is " & EndDate Resume Exit_WorkingDays2 End Select
I am querying results using Access 97(Yes its old and no my company is not willing to upgrade.....:confused:). Anyhow, I am connecting to a corporate database that has two tables I am querying that should be joined on one field (wmg.wmgtk01_tnk.sys_i = wmg.wmgwo04_halfleg_actl.tnk_sys_i). I am running into a problem with these fields because they have been defined differently by my IT department. The "sys_i" field is a NUMBER of length 5, while the "tnk_sys_i" field is a NUMBER of length 20. Is there a way that I can trick Access into joining these fields even though they do not match? I am currently getting a "Data Type Mismatch" error when I attempt to create this join.
I've been studying unbound for quite awhile and i've build to forms but i seem to get stumped with datatype mismatch. I've tried everything that i would possibly know. I guess i'm just to new in access to try this but it's the only thing that works for what i'm trying to do can some1 please provide me some assistance. I've attached both forms. YOUR HELP WILL BE GREATLY appreciated.
Now the problem, when adding or editing info i get datatype mismatch -21233 some number of that sort....
I am trying to print letters from access using a command button. It works well, but when I try to print the displayed record, I get "Data type mismatch in criteria expression".
The primary key is a 9-digit number where some have a leading zero. I have made this as text so I do not loose the leading zero.
Here is the code when the command button is pressed:
Private Sub Command1315_Click() Dim strWhere As String If Me.NewRecord Then 'Check there is a record to print MsgBox "Select a record to print" _ , vbInformation, "Select a Record" Else 'The Student ID Number is the name of the Primary Key
strWhere = "[STUDENT_ID] = " & Me.[STUDENT_ID] DoCmd.OpenReport "HONORS_LETTER", acViewPreview, , strWhere End If End Sub
I'm having some problems with a simple query and it's driving me nuts. The invoice numbers in our system have hyphens in them, and I'm trying to find invoice numbers whose part before the hyphen matches a number I enter. Here's my SQL:
SELECT dbo_NIHB_ClaimLog.InvoiceNum, Left([InvoiceNum],InStr([InvoiceNum],"-")-1) AS InvoiceNumLeft FROM dbo_NIHB_ClaimLog WHERE (((dbo_NIHB_ClaimLog.InvoiceNum) Is Not Null) AND ((Left([InvoiceNum],InStr([InvoiceNum],"-")-1))=23316));
I'm getting a "Data Type Mismatch In Criteria Expression" error, and I can't figure out why. I've wrapped a Clng() around the Left() function, but that doesn't help either.
I have two tables, one has the autonumber column, sysid, and then in the process of updating the database via forms the sysid from one table is placed in another (text format). I thought I could use that to link the tables for queries, but I am running into a data/type mismatch error.
I am getting the following error when I try to present some information from a database:
Microsoft JET Database Engine error '80040e07' Data type mismatch in criteria expression. /tribute2.asp, line 168
The code relating to this is: The error line it is talking about is: Code:rsGuestbook.Open SQLstr, adocon
Code: <%Dim adoCon 'Holds the Database Connection ObjectDim rsGuestbook'Holds the recordset for the records in the databaseDim SQLstr'Holds the SQL query for the databaseSet adoCon = Server.CreateObject("ADODB.Connection")adoCon.Open = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=c:inetpubftprootlocalusericlay emember ing.co.nzdb emembering.mdb;"strcustomerID = Request.QueryString("remID")Set rsGuestbook = Server.CreateObject("ADODB.Recordset") sqlstr = "select * from guestbook where guestbook.mid =" & strcustomeridrsGuestbook.Open SQLstr, adoconDo While not rsGuestbook.EOF'Write the HTML to display the current record in the recordsetResponse.Write ("<font face='Arial' size='2' color='#000080'><i>A tribute provided by ")Response.Write (rsGuestbook("confirstname"))Response.Write (" ")Response.Write (rsGuestbook("conlastname"))Response.Write ("</i></font><font face='Arial' size='1' color='#000080'><i> ")Response.Write (rsGuestbook("conrelationship"))Response.Write ("</i></font><br><br>")Response.Write (rsGuestbook("conmessage"))Response.Write ("<br>")'Move to the next record in the recordsetrsGuestbook.MoveNextLoop'Reset server objectsrsGuestbook.CloseSet rsGuestbook = NothingSet adoCon = Nothing%>
Can anyone see where I have gone wrong ... could it be something to do with the fact that 'remid' relates to another table in the database. Though when I did a reponse write on the sqlstr it is presenting the remid.
can someone tell me why I getting this error when I try and run this query:
select distinct case_id from NOLDBA_RPT_CASE_CHG_IND G
where sys_curr_date between '01/01/2005' and '12/31/2005' and aft_case_status = 'O'
and not exists ( select 1 from NOLDBA_RPT_CASE_CHG_IND X where X.case_id = G.case_id and X.aft_case_status = 'C' and X.sys_curr_date = G.sys_curr_date )
Looks like mismatched join types has caused others plenty of headaches in the past!! I am trying to create a query that connects 2 separate areas of our factory. The first table (Table 1) has a field called prod_code which is a text field and this code (5 digit number) describes a manufactured product. The next table (Table 2) also has a field called prod_code which is also a text field, is a different 5 digit number, and describes the same product but after packaging. There is a 3rd table which I want to use to link both of these tables, but in table 3: table 1. prod_code = table 3.item_code, and is a long integer. and table 2.prod_code = table3.item_code_prnt, also a long integer. I need to be able to use table 3 to correlate data from tables 1 and 2. I suspect I need to use Clng or similar but am unsure how to apply it. Have been trying to construct an expression but continually get error (bracketing error, join mismatch etc, etc) Any clues?
ID (Type Text) Title (Type Text) Remarks(Type Text) Formatted: FormatTitle([title],[Remarks]) Expr1: InStrRev([Formatted], "~")
public functionFormatTitle(ByVal sTitle as String, ByVal sRemarks as String) as String 'do process code here very complicated an long, but works find in the end 'creates a Multi-String delimited by | (pipe) end function
The above works, and Expr1 does give an accurate value for the position of a "~" (tilde) in the string Created by the FormatTitle() function.
However, If I put a Criteria >0 on Expr1 it asks for the value of the [Formatted] field as if it was a parameter. If I put a criteria for Formatted: Like "*~*" I get a Data Type Mismatch in Query Criteria
This Query Also produces the Data Type Mismatch in Query Criteria pardon me, but WTF? If it isn't a STring, than InStrRev() should produce an error, not an accurate response, and if InStrRev() produces a number why can't i compare it to 0 (zero)? This is indubitably messed up that I'm getting this error. There is no data type mismatch, on either of these tests, one is a string and I criteria-limit it by a string operation, the other is a number and I criteria limit it by a number, WHAT IS GOING ON!!!
Thanks Jaeden "Sifo Dyas" al'Raec Ruiner - The Frustratedly Confused
I would be much obliged if someone would help me here.
I have the following code which takes a value from a combobox and uses it in an sql statment to find a certain record and then it populates the GUI with that recordset , however I get the following error "Data type mismatch in criteria expression"
Please help
CODE:
Private Sub cmdSearch_Click()
Dim sql As String Dim rsUpdate As New ADODB.Recordset
On Error GoTo DbError
sql = "SELECT * FROM ServiceReport WHERE CallReferenceNo= " & Me.cboSearchRef.Value
hi guys, here is my problem.the error in the title appears when i try to update a record.the field MODON in the table is defined as a short date and an input date 00/00/0000.Here is the code where i insert and update the records: Option Compare DatabaseOption ExplicitPrivate Sub Command4_Click()On Error GoTo Err_Command4_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "frmCalendar" DoCmd.OpenForm "frmCalendar", , , , , acDialog, Me.name & ";modon"Exit_Command4_Click: Exit SubErr_Command4_Click: MsgBox Err.description Resume Exit_Command4_Click End SubPrivate Sub Command15_Click()Dim str1 As DateOn Error GoTo Err_Command15_Click 'DoCmd.SetWarnings False If DCount("[comment]", "comments", "[change_id]=" & Me.Task_Num & "") = 0 Then MsgBox "insert" DoCmd.RunSQL "insert into [comments] (change_id,modon,comment,modby,modif) values (" & Me.Task_Num.Value & ",'" & Me.modon.Value & "','" & Me.Text10.Value & "','" & Forms!Login!username1 & "','" & Now() & "');" DoCmd.SetWarnings True Else MsgBox "update" MsgBox DLookup("[comment]", "comments", "[modon]='" & CStr(Me.modon.Value) & "'") DoCmd.RunSQL "update [comments] set comment='" & Me.Text10.Value & "' where change_id=" & Me.Task_Num & " and [modon]='" & Format(str1, "dd/mm/yyyy") & "';" DoCmd.RunSQL "update [comments] set modby='" & Forms!Login!username1 & "' where change_id=" & Me.Task_Num & " and [modon]='" & Me.modon.Value & "';" DoCmd.RunSQL "update [comments] set modif='" & Now() & "' where change_id=" & Me.Task_Num & " and [modon]='" & Me.modon.Value & "';" End If DoCmd.SetWarnings True Exit_Command15_Click: Exit SubErr_Command15_Click: MsgBox Err.description Resume Exit_Command15_Click End SubPrivate Sub Command16_Click()On Error GoTo Err_Command16_Click DoCmd.CloseExit_Command16_Click: Exit SubErr_Command16_Click: MsgBox Err.description Resume Exit_Command16_Click End SubPrivate Sub Command4_Exit(Cancel As Integer) If IsEmpty(Me.modon) Then MsgBox "Please, select a date for the minute" Me.modon.SetFocus Else Me.Task_Num.Visible = True End IfEnd SubPrivate Sub Form_Load() Me.Text13.Visible = False Me.Text10.Visible = False Me.Label12.Visible = False Me.Label9.Visible = False Me.Task_Num.Visible = FalseEnd SubPrivate Sub task_num_AfterUpdate() If IsEmpty(Me.Task_Num) Then MsgBox "Please, select a task Number" Me.Task_Num.SetFocus Else Me.Text13.Visible = True Me.Text10.Visible = True Me.Label12.Visible = True Me.Label9.Visible = True Me.Text13 = DLookup("[description]", "newchange", "[change_id]=" & Me.Task_Num & "") Me.text10 = DLookup("[comment]", "comments", "[change_id]=" & Task_Num & " and [modon]='" & Me.modon.value & "'") End IfEnd Subthx in advance....
I am trying to set a recordset, and I keep getting this data type mismatch error, but I cannot see what the problem is. Here's my code:
Set rstAccounts = dtbCurrent.CreateQueryDef("", "SELECT [Account ID], [Balance] FROM tblAccounts WHERE [Account ID]='" & txtAccountID.Value & "';").OpenRecordset
txt.AccountID.Value is 1, and when I hard code the value as 1 it works, so I'm not sure what the problem is. I've tried using CStr() to convert it to a string, CInt() to convert it to a integer (even though it already is one), with using both quotes, with only double quotes, and with only single quotes. It's driving me crazy, because i'm sure it's something really simple, but I'm not sure what else to try.
I'm trying to create a query based on another query. However, my WHERE statement is causing a data type mismatch for a date. My code is:
Code: SELECT id, status, updated, [previous renewal] FROM qrynext renewal WHERE status = "active" and [previous renewal] = date()
If I remove the " and [previous renewal] = date()" it works just fine. But even setting up [previous renewal] to equal #7/17/14# or "07/17/14" or anything else I've tried won't work. The field that it's based on is definitely a date field, but I don't know why it would cause a data type mismatch.
I'm trying to create a count on a tick box of products that have been reviewed, however, the SQL statment I am using (as I have for a couple of other counts will not work fo this dues to 'Data type mismatch' which I can only presume is due to the fact that is is a tick box....
SELECT COUNT (TechnicalServicestbl.RequestID) AS TotalAwaitingReview FROM TechnicalServicestbl WHERE (TechnicalServicestbl.[Current Status] = "Completed") AND ((TechnicalServicestbl.[Review]) = "No" )
I have used the same template for a different count of completed jobs of the day, which works fine so far as I can tell.
SELECT COUNT (TechnicalServicestbl.RequestID) AS CompletedJobsToday FROM TechnicalServicestbl WHERE (TechnicalServicestbl.[Current Status] = "Completed") AND (TechnicalServicestbl.[Date Complete]=Format(Now(), "mm/dd/yyyy"));
The parameters @subject and @type are simply strings selected from dropdown values.
The @date parameter is set by using a dropdown to select a timeframe to search in, specifically "Within 1 month", "Within 3 months", "Within 6 months". These options have the values "1", "3" and "6".
When the form is submitted the value of the selected option is passed into the following routine:
Dim valSelectedDate AsInteger Dim dateParameter AsDate valSelectedDate = ddlDate.SelectedValue dateParameter = DateAdd("m", valSelectedDate, (Date.Now)) cmdSelectEvents.Parameters("@date").Value = dateParameter
When I run the debugger the right date value seems to be being passed to the sql query (i.e. if the user selects "within 6 months" and today's date is 5th May 2005, then #05/11/2005# is passed as the parameter) but I get the error data type mismatch. The column eventDates.date is a Date/Time column.
The error I'm getting is "data type mismatch in criteria expression".
Private Sub BtnAddBooking_Click() Dim CustomerID As String Dim StaffID As String Dim intPos As Integer Dim strSQL As String Dim strSQL2 As String Dim BathValue As Integer Dim rst As DAO.Recordset Dim RemainingBookingExists As String Dim RemainingBaths As Integer Dim RemainingBathsExists As String
Some background: I am making a form at work for a coworker with cascading combo boxes where she can select a Customer, then Platform Description, then Period, then Year. I used VBA code for these and they all seem to be working, except the Year.
Code: Private Sub Form_Load() On Error Resume Next CustomerCB.SetFocus
[Code].....
I am pulling a table from Excel into Access (SD0039DA_T2), then I have used a delete and append query to populate a 2nd table (SD0039DA_T). I did this 2nd table because the first table was slowing down all of Access because it's such a large file directly linked to Excel.
The only real difference between the two tables is I added another column to SD0039DA_T called BillingYear. This is the Year in the cascading comboboxes/listboxes I am having trouble with. In the append query, I used ...
I am getting this error in a query. The field generating the error is a calculated field using a custom function.The function is:
Code:
Public Function DecimalTime(dblEvalTime As Double) As Double DecimalTime = Hour(dblEvalTime) DecimalTime = DecimalTime + (Minute(dblEvalTime) / 60) DecimalTime = DecimalTime + ((Second(dblEvalTime) / 60) / 60) DecimalTime = Round(DecimalTime, 2) End Function
The dbalEvalTime parameter is passed in to the function as (DateIn+TimeIn)-(DateOut+TimeOut).
So the data type passed in is Double and the Function result is Double. The criteria i am applying in the query is simply <0.01. I have formatted the query field as #.00, 0.00 and General Number but it makes no difference.
I have also tried creating a second query using the first as its data source and applying the criteria in that query but still get the same error. Without the criteria the query runs fine.
Code: SELECT prevwd([practice_bacs_submission_date])<Date() AS chase_it, practice_bacs.practice_bacs_submission_date FROM practice_bacs WHERE (((practice_bacs.practice_bacs_submission_date)>#1/31/2013#));
and in the query results I see 0 and -1 as expected for the 'chase_it' expression BUT When I add True (or -1, or 0) as a criteria for 'chase_it', I get the "Data type mismatch in criteria expression" error.So the sql that fails is
Code: SELECT prevwd([practice_bacs_submission_date])<Date() AS chase_it, practice_bacs.practice_bacs_submission_date FROM practice_bacs WHERE (((prevwd([practice_bacs_submission_date])<Date())=True) AND ((practice_bacs.practice_bacs_submission_date)>#1/31/2013#));
In case it's relevant, my function prevwd is:
Code: Function prevwd(dt As Date) As Date 10 On Error GoTo prevwd_Error 20 dt = dt - 1 30 While Weekday([dt]) = 1 Or Weekday([dt]) = 7 Or IsBankHoliday(dt)
[code]...
and this function is used extensively and always works perfectly. I have tried using DateAdd instead of dt = dt - 1, but that made no difference.
I am creating a simple query in a farm audit database.
In criteria of the customers field, i have entered "Farmer One" as this is the customers data which I want to retrieve and in the Totals section I have changed the setting to Where instead of group by, but I am still getting "Data type mismatch in criteria expression" popping up.why this is?
I am trying to insert a text box value into a text field value in a table. I am checking to see if the value is already in the table but come across an error on the second click. The first click enters the number, and the second click gets error. I know where the error is but I'm not sure why or how to fix it.
Code:Dim db As DAO.DatabaseDim rs As DAO.RecordsetSet db = CurrentDb()Set rs = CurrentDb.OpenRecordset("CVHOLD", dbOpenDynaset)If Not rs.BOF Then rs.MoveFirstrs.FindFirst "[Batch Number] = " & Me![Batch Number]'Error here on second passIf (rs.EOF) Then 'Seems to insert new record properly 'No Batch Number in Table yet. rs.AddNew rs("Batch Number") = Me![Batch Number] rs("Date Closed") = Now() rs.Update rs.CloseElse 'never enters, jumps to Error label 'Batch already listed in table MsgBox ("Batch already in table. Updating Closed date")End IfErr_cmdHoldStatus_Click: MsgBox Err.Description
This is what the debugger outputs for my values Code:Me![Batch Number] : 81697 : Object/Textbox rs("Batch Number") : "81697" : Object/Field rs.BOF : False : Boolean rs.EOF : False : Boolean