Detecting broken linked Excel Tables - ms-access

I am looking how to detect if a table has a broken link or not without resorting to attempting to use the table and have my access db error out. I universally have found that every resource uses code similar to this:
If Len(TableName.Connect) > 0 Then ...
or something similar but in my db if a table/file had a previously working link it maintains it's last known good .connect even if the link is broken. So checking the .connect does not work. Am I missing something? Or better yet is there a different solution to checking for broken links?

As the first, you can parse the Connect property:
FileName = Split(CurrentDb.TableDefs("LinkedExcelRange").Connect, "=")(1)
' FileName -> d:\path\yourexcelfile.xlsx
and check if that exists.

Related

How to figure out the import rules for a given command?

So I'm looking at some access code, and trying to figure out what exactly it's doing. Semi-stuck at the following line:
SpecName = "DocLineDetailImportSpec"
DoCmd.TransferText acImportDelim, SpecName, tblname, filenm, True
Ok, let's do some googling. Microsoft tells us the following:
https://msdn.microsoft.com/en-us/vba/access-vba/articles/docmd-transfertext-method-access
Acimportdelin - ok, the default. Sure.
Specname - this is where I'm stuck
Tablename - yup, obviously going to the table named earlier
Filename - yup, obviously grabbing the file we declared earlier in the code
True - Sure, not too concerned about it.
So I'm on Specname - reading the documentation, it's a type of import rule. Ok, where are import rules kept? Apparently, in saved imports (from my googling). I get there and... there are two rules, neither of them have the name, and neither of them appear to have any sort of visibility. I can't see what they're doing (if they were even correct), or anything. How can I figure out (short of brute-force uploading data and tracing it all) what the speccommand is?
Uploading Excel files btw
Thank you
Your question, essentially, boils down to the following: how can I view the import specifications?
Well, in the following way (screenshots: Access 2016)
Step 1: Try to add a new data source -> Text
Step 2: Go to advanced
Step 3: Go to specifications
You can view and adjust import and export specifications here.

Having trouble exporting to text file

I am having some trouble exporting out to a file from VBA. Some things to be aware of are that JobDetail is a valid export SpecName and 2_JobDetail is a query that combines some info with stuff from other fields and tables. When I try to run I get the error like below on my DoCmd.TransferText method call. Advice? am I doing something wrong? code below.
Public Function exportJobDetailRecs(dateStr As String)
'Docmd.TransferText(acexport,specName,TableName, FileName,HasfieldNames,HTMLTableName)
DoCmd.TransferText acExport, _
"JobDetail", _
"2_JobDetail", _
"P:\Folder1\Folder2\Tracker\" + CStr(dateStr + "_OrderStatus_jobdets.txt")
exportJobDetailRecs = CStr(dateStr + "_OrderStatus_jobdets.txt")
End Function
Some questions people have asked:
Yes - Do you have full permission to write to the file (i.e. full permission to the folder as well as the text file if you are not creating it with code)
Yes - Check path (folder name with space/etc) for mistakes.
and I'm copying with Shift-Right click, then copy as Path, and adding a trailing \ manually
Yes - Have you try exporting manually and overwriting your existing spec and see if that works? If so, try runs the code again afterward
Yes - Have you confirmed JobDetail is an export spec instead of an import spec?
and manual exports work fine
3-50 - How many records does 2_JobDetail currently return?
Same - Try the export (temporarily) to "P:\Folder1\Folder2\Tracker\a.txt"
It doesn't care what folder (that exists) I point it to, it wont go
None - Also make sure that there are no punctuation marks in strDate
http://pastie.org/private/0kdf2wvkg1wug5physna for the function I use to make dateStr
I figured this out. It wanted me to create the destination files too, not just the directories before I could copy to it.
I ran into the same problem. Solution: I changed all the column names and it worked. Something about the column names MS Access didn't like. I named them f1, f2, f3...
I just ran into the same problem; I changed the encoding from 'Westeuropean (Windows)' to 'Unicode (UTF-8)' and that did the trick. The problem probably had to do with this invisible 'character' in one of the fieldnames: "observer".

"Operation must use an updateable query" error in MS Access

I am getting an error message: "Operation must use an updateable query" when I try to run my SQL. From my understanding, this happens when joins are used in update/delete queries in MS Access. However, I'm a little confused because I have another query almost identical in my database which works fine.
This is my troublesome query:
UPDATE [GS] INNER JOIN [Views] ON
([Views].Hostname = [GS].Hostname)
AND ([GS].APPID = [Views].APPID)
SET
[GS].APPID = [Views].APPID,
[GS].[Name] = [Views].[Name],
[GS].Hostname = [Views].Hostname,
[GS].[Date] = [Views].[Date],
[GS].[Unit] = [Views].[Unit],
[GS].[Owner] = [Views].[Owner];
As I said before, I am confused because I have another query similar to this, which runs perfectly. This is that query:
UPDATE [Views] INNER JOIN [GS] ON
[Views].APPID = [GS].APPID
SET
[GS].APPID = [Views].APPID,
[GS].[Name] = [Views].[Name],
[GS].[Criticial?] = [Views].[Criticial?],
[GS].[Unit] = [Views].[Unit],
[GS].[Owner] = [Views].[Owner];
What is wrong with my first query? Why does the second query work when the first doesn't?
There is no error in the code, but the error is thrown due to the following:
- Please check whether you have given Read-write permission to MS-Access database file.
- The Database file where it is stored (say in Folder1) is read-only..?
suppose you are stored the database (MS-Access file) in read only folder, while running your application the connection is not force-fully opened. Hence change the file permission / its containing folder permission like in C:\Program files all most all c drive files been set read-only so changing this permission solves this Problem.
Whether this answer is universally true or not, I don't know, but I solved this by altering my query slightly.
Rather than joining a select query to a table and processing it, I changed the select query to create a temporary table. I then used that temporary table to the real table and it all worked perfectly.
I had the same error when was trying to update linked table.
The issue was that linked table had no PRIMARY KEY.
After adding primary key constraint on database side and re linking this table to access problem was solved.
Hope it will help somebody.
I had the same problem exactly, and I can't remember how I fond this solution but simply adding DISTINCTROW solved the problem.
In your code it will look like this:
UPDATE DISTINCTROW [GS] INNER JOIN [Views] ON <- the only change is here
([Views].Hostname = [GS].Hostname)
AND ([GS].APPID = [Views].APPID)
...
I'm not sure why this works, but for me, it did exactly what I needed.
To update records, you need to write changes to .mdb file on disk. If your web/shared application can't write to disk, you can't update existing or add new records. So, enable read/write access in database folder or move database to other folder where your application has write permission....for more detail please check:
http://www.beansoftware.com/ASP.NET-FAQ/Operation-Must-Use-An-Updateable-Query.aspx
set permission on application directory solve this issue with me
To set this permission, right click on the App_Data folder (or whichever other folder you have put the file in) and select Properties. Look for the Security tab. If you can't see it, you need to go to My Computer, then click Tools and choose Folder Options.... then click the View tab. Scroll to the bottom and uncheck "Use simple file sharing (recommended)". Back to the Security tab, you need to add the relevant account to the Group or User Names box. Click Add.... then click Advanced, then Find Now. The appropriate account should be listed. Double click it to add it to the Group or User Names box, then check the Modify option in the permissions. That's it. You are done.
I used a temp table and finally got this to work. Here is the logic that is used once you create the temp table:
UPDATE your_table, temp
SET your_table.value = temp.value
WHERE your_table.id = temp.id
I got this same error and using a primary key did not make a difference. The issue was that the table is a linked Excel table. I know there are settings to change this but my IT department has locked this so we cant change it. Instead, I created a make table from the linked table and used that instead in my Update Query and it worked. Note, any queries in your query that are also linked to the same Excel linked table will cause the same error so you will need to change these as well so they are not directly linked to the Excel linked table. HTH
This is a shot in the dark but try putting the two operands for the AND in parentheses
On ((A = B) And (C = D))
I was accessing the database using UNC path and occasionally this exception was thrown. When I replaced the computer name with IP address, the problem was suddenly resolved.
You have to remove the IMEX=1 if you want to update. ;)
"IMEX=1; tells the driver to always read "intermixed" (numbers, dates, strings etc) data columns as text. Note that this option might affect excel sheet write access negative."
https://www.connectionstrings.com/excel/
UPDATE [GS] INNER JOIN [Views] ON
([Views].Hostname = [GS].Hostname)
AND ([GS].APPID = [Views].APPID) <------------ This is the difference
SET
[GS].APPID = [Views].APPID,
[GS].[Name] = [Views].[Name],
[GS].Hostname = [Views].Hostname,
[GS].[Date] = [Views].[Date],
[GS].[Unit] = [Views].[Unit],
[GS].[Owner] = [Views].[Owner];

MySQL Getting Data from SQL Query (phpmyAdmin)

So I figured out (got some help from this site too) how to insert a data into my query, but now I go on another tab on my C# tool at visual express 2008 where there is a textBox5 and I want all of the data to show up there(textBox5) after I click on the Update Button(button3). How Will I be able to do this? Here is the code at pastebin (please alter it yourself and re-upload it at pastebin.com and send me the link, many thanks!): http://pastebin.com/g975HB1r
Make a string to parse the data you want to display and set the textbox.text property to this string.
Also, change the textbox5_textchanged, because you will clear it, after the updating.
EDIT :
Added the suggested corrections on pasteBin. You can extend it, by using also the other columns.
http://pastebin.com/r0xEjKWj

PHPMyAdmin alert box - missing value in the form - all usual fields are filled out?

For some reason while using PHPMyAdmin and attempting to save a table, even though I've entered all of the information I usually do I'm getting an alert box popping up with the content "Missing value in the form!".
Here's a screenshot of my PHPMyAdmin console (2 screens merged due to resolution):
PHPMyAdmin Create Table Modal Box
What I've tried so far:
Changing the data types all to VARCHAR with a length of 255 (except for the deindeal_id column, which remained INT with a length of 12).
Encasing description in "`" (bacticks), thinking it may be a reserved word of some sort.
Adding a coalition.
Using different table engines (InnoDB, MyISAM (the one I wanted)).
I'm really stumped as to what could be causing this issue, so any answers would be greatly appreciated!
Looks like a bug. Try going to Settings -> Features -> General tab and disable Ajax.
Then, try to create a new table and it won't use the popup.
I had this issue with the SQL form (where you can paste larger blocks of MySQL code). Not sure if it's a fluke, but I selected all of my input and then hit Go..and it worked.
Did you give it a table name.
I had the same problem & I simply forgot to give it a table name...at the top.
Got the same error, probably a Bug.
What Lex said: "Maybe if you define a column NOT NULL (ie. don't check the box in the Null column, you have to define a default value? – Lex 20 hours ago"
Nope. Doesn't work either and wouldn't make much sense. If you don't define a default value, the server will either insert an empty string, or fail the query; depending on settings.
I just encountered this....
It turns out I was forgetting to provide a name for the new table....
It's a bug I also "met" on phpMyAdmin v.3.5.1 - Disabling Ajax (and by default I love to disable it) will do the job.
Stop & start MySQL service. You can create table.
Yes It's a bug. what I did is to stop xampp (or if you're using wampp),
and then start them again. after that you will be able to create the table in phpMyAdmin
You can also try USE databasename; at the top of your query. In some versions this error seem to happen even if you did select your database, USE databasename; will fix this bug in those situations.
I just encountered this in 4.1.11. Seems to be a bug (again?). Disabling the popup and switching to the original theme resolved it somewhat for me, although you'll be without the popup which is a pain in the behind.
Switch back to Original theme:
Home > Theme: "Original"
Disable the popup:
Home > More settings > SQL queries > Disable: "Edit in window"
I got this problem too and I had opened same database in phpmyadmin in two separate tabs of browser . When I closed one tab and access phpmyadmin, the problem disappeared.
Just to let you know folks. Turning off my AdBlock Plus finally solved it for me. No more Missing value in the form! pop-ups when trying to submit something. Whitelist phpMyAdmin domain in any style or script altering add-on you might use.