Queries :: Using Recordset In VBA Code With Yes / No Datatype
Apr 18, 2013
I'm a having a problem with a Yes/No datatype. Fundamentally, my code looks like this:
strSQL = "SELECT * FROM tblAddresses " & _
" WHERE YPID = " & Me.Parent.IDNUMBER & " AND CurrentAddress = yes"
Set rs = db.OpenRecordset(strSQL)
Now this statement returns 3 records even though only 1 Current Address exists.
false also returns 3 records
true also returns 3 records
no also returns 3 records
-1 also returns 3 records
0 also returns 3 records
1 RETURNS 0 records!!
If I look at the table in Access, I only have 1 CurrentAddress record for my IDNumber.
I'm fairly new to SQL and I'm trying to input data into this form I've created but it tells me that "this Recordset is not updateable". Here's my SQL code, I'm not certain this is the problem though.
Code: SELECT [Annual Instructor Report County Summary].*, [Camps, SS Events, Events, Total Members].*, [Archery Members].[numArchClubs]+[Archery Members].[numArchNon4H]+[Archery Members].[numArchCamp]+ [Archery Members].[numArchSSEvent]+[Archery Members].[numArchEvent] AS totArchMem, [Rifle Members].
i have a combo box ,and when i should select "all",this button after update code should show me all the column of table test ,but looks like for no reason the record set shows nothing and its not working.
Code:
Private Sub cboTaskListName_AfterUpdate() 'On Error GoTo cboTaskListName_AfterUpdate_Err Me.Refresh Dim db As DAO.Database Dim SQL As String Dim rs As DAO.Recordset If Me.cboTaskListName = "111111" Then Set db = CurrentDb() SQL = "SELECT no1 from test" Set rs = CurrentDb.OpenRecordset(SQL, dbOpenDynaset) End If End Sub
I have created code to import and excel file and create a table from that info. Now I need to confirm that the import has the correct Datatype of Number and Fieldsize of Double for one of the columns.
I had created a Access DB where there is a query named as "GenerateTimeHours", here whenever am trying to do a search by ID, Time & Date, always getting "data type mismatch error", I checked it and understand this Error is causing for Date Search Clause, I tried every possible way to change the date format, using #, etc etc but no result :Query As follows:
Code:
SELECT GenrateTimeHours.ID, GenrateTimeHours.MaximumSeatsNumber, GenrateTimeHours.DaysInMonth, GenrateTimeHours.Hour, GenrateTimeHours.Remaining, GenrateTimeHours.FinalSeats FROM GenrateTimeHours WHERE GenrateTimeHours.ID = 1 and GenrateTimeHours.Hour between #08:00:00 AM# and #10:00:00 AM# AND (GenrateTimeHours.DaysInMonth) between #7/2/2013# AND #7/3/2013#;
I am trying to populate a recordset in Access97 using the following code, but cannot seem to get it to work.
The table name is "EventData" that has Type and date fields. startdate and enddate are text boxes on a Form, for wich the user enters the date range, and then clicks a command button to build an Excel spreadsheet on the fly that will be populated with the results of the recordseet.
here is the code:
Dim db As DAO.Database Dim rst As DAO.Recordset
strSql = " SELECT EventData.EventType, Count([EventData].[EventType]) AS [Num Occurrences] FROM EventData WHERE ((EventData.Date) >= (Me!startdate)) GROUP BY EventData.EventType"
The error message that I am getting is "run time error 3061", too few paramaters. ALSO not sure if I need a semicolon right before the closing quote of strSql.
I am using the dcount function as the example I display below. The problem is that it returns the correct result (i.e. 59) but the data type is text (59 is on the left side) . I need this to be number.
I have this linked table query from a OBDC and I need to be able to filter out specific dates in that query. The dates in the table were in text format and I converted the dates using the CDate function. I wanted to filter the query to a single date and always I get the Datatype mismatch in criteria expression error.
However, filtering dates does work only when there are other specifications in the criteria fields (e.g. if I specify a date and and name). My SQL code in error looks like this:
SELECT purch_hist.PUITM AS ITEM, purch_hist.PUPO AS PO, purch_hist.PUQTY AS QTY_RECEIVED, CDate([purch_hist.PURDT]) AS RECEIPT_DATE, itmcnt.ITBYR AS BUYER, purch_hist.PUCST AS UNIT_COST, vendor.NVNO AS VENDOR NO,
[code]...
This query works fine with a non converted date field, however the dates I need are in text format and need to be converted since I do not have permissions to edit the tables.
Hy,i have some ADO recordset and i want to bind it to blank report that I made in reports.How to do this. If i create report in reports section and after that i want to see it in my code as that same object and set his record or data source property how to do this?? I know that you can set the recordsource property directly in report but it includes some values from textbox in my form that doesn't show corectly(it's an array of numbers,and i don't know why it doesn't accept it). Thanks
Why I getting an error when trying to run the below code ? If I take out
Me.ClientNameList.Column(1) = rs.Fields("[Tracking Date]") Then . . .
add "And" to
If Me.ClientNameList = rs.Fields("[Client Name]") . . .
I do get a record, but with the wrong date. I need to match the client's name and tracking date, then move the related fields to a MS Access form.
The code follows:
Private Sub ClientNameList_Click() Dim db As Database Dim rs As Recordset Dim i As Integer Set db = CurrentDb Set rs = db.OpenRecordset("Progress Tracking")
I am not sure if my coding is efficient or not but it takes so long to read lets say tbCOMPANY 40k records and find if values of two columns exists in tbRESULT which holds 30k records. Then if it doesn't find any records in the tbRESULT it will just insert the row otherwise an update will be executed.
What I did was:
1. Read tbCOMPANY each row using for loop 2. tbCOMPANY.FindFirst to lookup if values exists in the tbRESULT 3. If tbCOMPANY.noMatch, it will insert into tbRESULT 4. else it will update the matched row in the tbRESULT
Its been taking like over 30 minutes to process this and still ongoing and it will still keep on running. Now Access is showing as Not Responding in the task manager.., Any efficient way to do this?
Special situation: The SQL Server Linked Server across the country is linked to a Read Only Oracle DB. This data pull works perfectly and populates the Subform.
The problem is that Oracle can take 3 to 6 seconds to retrieve the single record depending on the network traffic through a small pipe.
The code below shows the RecordSource for the SubForm. clicking on a list box supplies the value. Then 3 to 6 seconds later, the subform populates.
The actual Recordset for this Recordsource is needed to conduct Validation on each field. Normally this would be on SQL Server, I might just create a Recordset Oject and run this SQL statement again in 1 milisecond. In this case, it will probably take an additional 3 to 6 seconds. Avoiding another lengthy round-trip to Oracle would be prefered.
Goal: How does one grab, clone, or other wise reference the existing recordset for the SubForm?
Note: Immediate Window - One single field can be returned quickly
There are 48 fields that need validation - is there a way to reference the entire recordset?
Immediate Window during Break Mode: ? me.fsubsrNavSHLBHL("NavSH_QQ") NESE ' this is the correct value for the current recordsource
Set a breakpoint right after the line: fsubsrNavSHLBHL.Form.RecordSource = "Select * from vsrNavigatorSHLBHL where Well_ID =" & txtNavWellID.Value
Immediate Window: ? me.fsubsrNavSHLBHL.Form.RecordSource Select * from vsrNavigatorSHLBHL where Well_ID =91229
I have a query (that gets it's data from several other queries) with a column called "max." The data in the column is correct, but when I call on the query in VBA, it shows me incorrect data.Here is where I call the query:
Code:
Dim db As DAO.Database, qdf As DAO.QueryDef, rs As DAO.Recordset Dim strReport As String Set db = CurrentDb() Set qdf = db.QueryDefs("7-ErrorsReport") qdf.Parameters(0) = Forms!frmmain!dt1.Value qdf.Parameters(1) = Forms!frmmain!dt2.Value qdf.Parameters(2) = Forms!frmmain!d2.Value
[code]....
The query looks at a table of employees and finds out if they have been issues a warning letter before, then prints out a corresponding report based on the "max" warning level they are at.The problem arises when an employee graduates from a 6 month probation period - all letters in that period should be ignored. As i said, they are ignored correctly when i run and view my query ("7-ErrorsReport") because they are filtered out at that point, but for some reason when this code runs, it somehow sees the previously issued letters which are stored in a table and likely in some of the other queries.
I am not sure if there is some issue with the query tree I have set up which is necessary to get the results I need, or if something is wacked with the was I am using it as a recordsource.
how to grab the recordset after a user has filtered a datasheet and export it to EXCEL with VBA from a Button on a form.
I've figured out how to export a pre-defined query to excel with all the fields I need. I was hoping to be able to grab the filters from the datasheet form and pass them to the query.
I have a main form with a bound Datasheet subform. The export button is on the main form and I need to grab the filtered data from the datahsheet subform.
I've posted this in my usual Excel forum without any response so I figure someone here might be able to help. I'm using an SQL query in an Excel VBA macro to extract info from an Access table and dump it into an Excel worksheet, which works fine except for a Memo field, which is truncated to one character length - text fields are fine, just this one Memo field. I'm using the Microsoft DAO 3.6 library. Any ideas?
I have a bunch of queries put in 1 macro. Of course, some queries have the same parameter [Enter current monthend] so when I run a macro, there are few popups asking to [Enter current monthend]. It’s annoying for users to put in the same parameter 2 or 3 times for a report. Is there a way to avoid it?
I tried to make [Enter current monthend] as a new_field so the 2nd query could pick up new_field instead of [Enter current monthend] again but that gave me an error b/c the new_field automatically has ‘binary’ datatype instead of ‘date’ datatype. How can I fix this?
my table have a a text field F1 (data ex:25%) and number field F2 . I have a query which contains a new number field based on the above fields i.e F3=F1*F2.My query is not able to retrieve the data.My data is been filled with error#.How i can convert the data types in order to get the multiplication of those two fields.
the standard value for the yes/no datatype = no..I try to set the standard value to yes but I can not be allowed for yes ? how do I set it to yes ? I have open the table, then I could not change to yes.
When I export or do a make table query from Oracle to Access, the new table has some of the datatypes changed. Many of my numberic fields are decimal instead of Long Interger. I then need to go and manually cahnge them back. If I forget or miss one, it crashes another application we use.
Has anyone come up with a solution to automatically go through the table structure and change the datatype from one format to another? This would be a great help.
I'm trying to write record set contents to excel. My query runs perfect in access query wizard, but recordset showing as null. My VBA code
Code:
Dim cnn As ADODB.Connection Dim recordst As ADODB.Recordset Dim strSQL As String Dim strPath As String Dim appXL As Excel.Application Dim wb As Excel.Workbook
Hi, When I click this buton I get an error on one of the following lines.. I can't figure out why and how to fix it. the error I get is run-time error '3464': Data type mismatch in criteria expression. I made the part where the error occurs in bold and italics
'submit for approval Private Sub Command22_Click() Dim rs As Object Dim rs2 As Recordset Dim db As Database Dim name As String Dim x As Integer 'will be used as flag for do while loop Dim cnt As Integer 'this will contain the number of records in the recordset
'MsgBox (Me.projno) Set db = CurrentDb
Answer = MsgBox("Are you sure you want to submit this timesheet?", vbYesNo) 'if cancelled If Answer = vbNo Then Else x = 0 'initialize flag Set rs = Me.Recordset.Clone
rs.MoveLast cnt = rs.RecordCount rs.MoveFirst
Do While x < cnt If rs!statusPM = "pending" Then MsgBox "This timesheet has already been submitted. You can't submit this again." x = cnt End If If rs!statusPM = "approved" Then MsgBox "This timesheet has already been approved by your supervisor. You can't submit this again." x = cnt Else MsgBox (rs!projno) Set rs2 = db.OpenRecordset("SELECT projmanager FROM Projects WHERE projno =" & rs!projno) Do While Not rs2.EOF name = rs2!projmanager MsgBox (name) rs2.MoveNext Loop rs.Edit rs!statusPM = "pending" rs!status = "pending" rs.Update x = x + 1 'MsgBox (rs!projno) rs.MoveNext End If Loop 'clear variables Set db = Nothing Set rs2 = Nothing End If End Sub
I have a problem with changing a datatype into a number. The thing is that all the fields are in text and i want to change some of them to a number datatype. If i try to change the field to a number i get a message that come up as This:The setting for the field size property of on or more fields has been changed to a shorter size. If data lost, validation rules may be violated as a result. I try to export it into an excel file and change all the field that i need to be a number and convert them into a number and it work by when i import them back into access they don't change.
I have a property database linked to ArcView 3.1. It has a field that links to the ArcView Database called ID which is unique and set to a data type of double.
I have a further form that can go straight to a record if you know it's ID. This form works fine so long as the ID field is no more than 5 digits. I have a series of polygons that have six figure ID's - the link to arcview works fine using these six fig ID fields however the form that looks for that particular ID can't cope with the six figure numbers...
My problem is although I could change all the ID's of the records in the Database so that the search on ID worked (ie five figure id) they then wouldn't match with the overlay in ArcView and I would not be able to link through using code without first changing and matching all the codes associated with the polygons (time consuming)
I did try changing the datatype of the ID field to long integer but still have the same problem. Strange that the search works for five figure IDs and not six.
Does anyone know whether this is a data type error or is it some simple oversight.? I can probably work out some way of changing all the ID fields to five figures but would prefer to keep the six figures as they are used in some pre-printed material as refs