Modules & VBA :: SQL To Copy Field Contents With Reserved Characters
Jul 11, 2013
I've got some code that loops through a record and copies the non-null fields to another record. This is the partial code:
For Each fld In tdf.Fields
If Not IsNull(Forms!contact_lookup![Contact_sub subform1].Form(fld.NAME)) Then
strSql = "UPDATE tbl1 SET tbl1.[" & fld.NAME & "] = '" & Forms!contact_lookup![Contact_sub subform1].Form(fld.NAME) & "' " & _
"WHERE tbl1.[FC_APN] = '" & Me.txtApn & "';"
DoCmd.RunSQL strSql
End If
Next fld
This works fine until it encounters a field whose contents has a reserved character, like a single quote (" ' ") in it, for example, "What's the what." At that point the SQL thinks there's a " ' " missing in the statement, and I get an error 3075 (syntax error: missing operator).
Two Solutions to address moving an Access Memo field into Excel when string has > 255 characters. All my 'reports' use Excel VBA (Access Reports are not used). The Excel reports can have 40,000 records. Speed to create the report can be an issue.
Describing 2 Solutions below to address moving Access memo fields with > 255 characters into Excel.After running this code
Code: 720 ObjXL.DisplayAlerts = False ObjXL.Columns("X:X").Select ObjXL.Selection.NumberFormat = "@" ' set column to Text 730 ObjXL.Worksheets(intWorksheetNum).Cells(intRowPos, 1).CopyFromRecordset rsNutsAndBolts
The Comments column are limited to 255 characters. So, the CopyFromRecordset (recordsetvariable) creates the 255 character limitation.
The reason? The 255 character limit is because CopyFromRecordset sutomatically uses the Characters property of the Range object. The 255 limit would not be there if the Cell Value property is used to assign the string to that cell.
Dim sRx as String ' String Prescription sRx = "String with > 255 characters ... you fill in the rest ...." Cells(1, 1).Value = sRx ' Cell's Value property assignment can be very large
Solution 1:
The record set is still in memory. By using a loop, a cursor can start with record 1 (memo column) and assign that value to the Excel row / column using the .value as shown above. Basically, this moves one memo field at a time, record by record. e.g. Read First recordset in Access, copy to variable, assign value to Excel row/column Then move next on each Access and Excel.
Solution 2:
An Access Memo filed [RxNotes] can have up to 750 characters. Cut it apart into three new fields that end up out in the very right Excel columns AA, AB, AC.
Note1=Mid([RxNotes],1,250) Note2=Mid([RxNotes],251,250) Note3=Mid([RxNotes],501,250) Then using Excel Object - Concat the cells back cell by cell... X2=CONCATENATE(AA2,AB2,AC2))
Then delete the columns AA, AB, AC to hide the evidence..Neither solution is all that elequent. Read about this and by golly, it made a difference
ConcatComments = "'" & CommentString
Before using the CopyFromRecordset be sure to add a single quote in front of the large string.
Turns out the interface between Access and Excel look for this to prepare Excel immediately for the string to be a string, not something else. Some of my strings had weird print characters that kind of looked like Japenese characters. It seemed random, it always happened if the string was 255 or more characters (ramdonly, not always). The single quote doesn't show up in Excel, but got rid of all the noise.
I am trying loop through a datasheet so that I can copy the contents of one field into another form.
I have tried using the bellow code to do this on a button click event. However when i run it I get an error telling me that the object doesn't support this property or method. Im not quite sure what this means.
Dim rst As DAO.Recordset Set rst = Forms![Roll Out - Site Form]![Roll Out - Sign items pick list].RecordsetClone Do Until rst.EOF [Roll Out - Sign items added].Form![Code] = [Roll Out - Sign items pick list].[Form]![Item Category]
I am trying create some code that checks if the contents of the status field in a table is "Authorised" where the ID = something specific for multiple records. If all records witht the specific ID are "Authorised" Then generate a new record in another table. Where to start, perhaps a Dlookup?
In the field names of my table, I have one field called Group. However, it is a reserved word in MS Accesss. My question is: Is there any way that we can use a reserved name in a field name?
Hi, I'm making a form where the contents of a field is determined on the contents of another field in another form. I thought an IIF function would work, but when I tried it the contents says #NAME.
I want to save the timestamp created in a table when a user opens the database. My vba saves the computer name and user name and sets the currentuser = yes. The table is mysql odbc, and has the requisite timestamp and id fields. I have a form that I can open that shows who is online at that moment. When a user closes the database, the currentuser field is set =no. All of that works well. Now, I have added a "starttime" field in which I would like to store the timestamp that was set upon opening, since when a user logs off, the timestamp gets changed to the log off time.
Code:
Dim myQry As String Dim sUserName As String Dim sUserComputer As String Dim currentVersion As Date
[code]....
The UserTimestamp in red is the field value of the first record in the table, not the usertimestamp in the user's record. How do I store the log on timestamp in the "starttime" field?
I am trying to copy a record as new record in vba in access so i make a button for the user so that they can copy a record each time and change a certain field if they wanted. How would i do that.
The GetDates Command BUTTON should generate the red data above, like:
Private Sub GetDates_Click()
Go to a new record Go to the field App_Freq and fill it with: Copy/paste the data from the field of the same name in the previous record Go to the field App_Date and fill it with: data based on this calculation using the PREVIOUS record fields: App_Date + App_Freq (which are days) Go to the field Action_Date and fill it with: data based on this calculation: App_Date (of current record now filled out - step above), minus 7 (days). End Sub
That's it!
All the dates format is set to medium date. An error message should come up in case App_Freq is empty, for example
Also note that the data can be manually changed at any time and should not revert to its last calculation. The button only generate data into a new record.
I am using Access 2010.Most of the time a tenant pays his exact rent. When that happens, I currently type in the payment (taken form the Rent field) and date of payment (current date) into a form. The date should not change.
I would like to place a checkbox into the form. If checked, the rent would be entered into the payment field and payment date (current date) would be entered automatically. Otherwise, I would just enter in the payment and date manually.
I would like to do a loop but never done one before, basically i want to copy the current record by the number of times specified in a quantity field
So if the quantity field in the record says 5 then copy that record 5 times (I have managed to create the copy and paste code but dont know how to make it do it 5 times
I hava a small dbase in which we store address information. Now you have a visit address, a mailing address and billing adress.
I want to use some buttons which trigger macro's to fill in these "Secondairy" addresses FROM the visit adress.
So a buttun that says: copy billing address from visit address. and then the street, Number, PO box en city will be copied from the visit address to the billing address.
It's probably possible through a macro but I'm having a hard time coming up with the syntax. Or it there an easier way? :confused:
I am trying to perform a search function query in access but am having trouble. I have two tables. One table has a column in which I need to search the contents of this field by referencing data in another field/table. I am able to write the query searching the data manually (not referencing the other table) but can't seem to get the query right when referencing the other table!
this query works = SELECT * FROM Sample_Data WHERE (((Sample_Data.[Affected_Frequencies]) Like "*451.425*" Or (Sample_Data.[Affected_Frequencies]) Like "*451.400*"));
but, i put together a frequency table (Table name = Frequencies) and the column within that I am searching for is called Frequency. im trying to reference Frequencies.Frequency using a LIKE statement.
Me.TxtNotAllowed.Visible = True dtTimer1 = Now dtTimer2 = Now + TimeValue("00:00:10") Me.TxtNotAllowed.Value = "You do not have permission to use this database !" Do Until dtTimer1 >= dtTimer2 dtTimer1 = Now() Loop Me.TxtNotAllowed.Value = "" DoCmd.Quit
The above code will run definitely for the 10 seconds however the textbox and contents do not display HOWEVER if stepped through with breakpoints line by line and the form checked each time the textbox DOES display and its contents.
I would like to ask if it is possible to use the contents of a table as a comparator? For example, I have this column in my table that has the schedules of the professor, if the professor for example failed to login within fifteen minutes after his/her supposed start of class a message will be displayed on the screen notifying that the professor has not yet logged in.
Is there a way to make the value of one field change dynamically based on the values in other fields on the form?
Here's the general idea. I have two tables.
RecordTable -------------- SiteID, etc.
SiteTable ------------- SiteID, SiteBlurb
I want have a form, where you can change the SiteID value in RecordTable, and have the SiteBlurb change (i.e. the form pulls the information from SiteTable) dynamically once you have entered the new value.
is there an alternative to making a field blank, other than my old trusty <Me.Field1 =""> ... ?
(my use of the < and > are purely for demonstration purposes, and do NOT get used in code)
I'd like some fields to be native, virgin, blank, et cetera... I do find sometimes I have to overly complicate a VBA statement by putting.. <If IsNull(Me.Field1) or Me.Field1 = "" then> because I have made that field value = "" to blank it out.
Does anyone have a definitive list of reserved words in Access? I understand certan words are reserved because they cause a problem when using vba. Is this correct?
It would make sense because I used to have a field called "Name" and my controls never worked correctly. I have since changed this and all is ok.
I have searched Access help files and this forum, but am unable to find a complete list other than the odd one like name, date, group etc.
My company requires a query to aid distribution, however I am experiencing some problems implementing the system.
We have purchased a large database of addresses and need to be able to query a town/street to find out how many houses are in that street.
I have the query and form set up to display the street/town and list of house numbers when searched for, however the houses are grouped by postcode rather than street, with multiple house numbers in the same field (see example).
Street Main Avenue
POSTCODE HG23 0DF
Houses 89;91;93
POSTCODE HG23 1DF
Houses 95;97;98
----
Basically, I need a total of how many individual houses there are in a street, regardless of postcode. In this case, it should treat the ";"s as dividers and return the result of '6'. Or in some cases ignore the semicolons as some fields look like ";;;;;;;;13". It should then add both the total for one postcode to the other postcode to display a complete total of houses in one road.
I have an Updates field in all of my tables. It, of course, holds my audit trail. Im tryiing to figure out a way that I could run a single command and clear the contents of all the Updates fields on all the tables in my db. Ideally, I'd like to auto generate a report for all the update fields on all the tables, then do a purge.
I'm an excel user and in using excel I can take two fields and combine their data in one field. I've got about 6 database files with anywhere form 1000 to 3000 records that have already been prepared and imported into access database files .mdb and I realize that the firstname lastname fields need to also be combined into a contact field with both names. In Excel it's easy in access I'm a little lost. I was looking to an update query however I can't find instructions on what I'm trying to do.
Basically i'm trying to link Access to Outlook to retrieve emails , When using the wizard to link outlook folder to Access it fails, i've been informed that this is due to the version of Access they have installed which is a ThinApplication.
i was wondering would it be possible to access / link my outlook emails to access via VBA Coding?
All i need is the raw contents of the email and subject.