Run Time Error '1004' General ODBC Error

  • Thread starter Thread starter CLR
  • Start date Start date
C

CLR

Hi All.........
I have a little macro that queries an ACCESS file and returns desired
values. The program works fine on my computer, but when my user tries to run
it on his computer, (same versoion of Excel, 2000), he gets the following
error.

Run Time Error '1004' General ODBC Error

Obviously some difference between the two machines, but who knows what to do
to fix it?

TIA
Vaya con Dios,
Chuck, CABGx3
 
It would help to know which line of code is failing. One thing to check is
the error option in BA. go to VBA menu Tools - Options - General - Error
Trapping.
 
Hi Joel........
Thanks for the comeback.....
Here's the code...
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=" & NewFile & ";DefaultDir= " _
), Array( _
";DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
)), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT `NPR Database`.`Disposition Date`, `NPR
Database`.`Inspection Date`, `NPR Database`.`NPR Origin`, `NPR Database`.`NPR
Number`, `NPR Database`.`Part Number`, `NPR Database`.`Serial Number`, `NPR" _
, _
" Database`.`Vendor Code`, `NPR Database`.`Vendor Name`, `NPR
Database`.`No of Defects`, `NPR Database`.`Qty RTV`, `NPR Database`.`Defect
Description`, `NPR Database`.`Corrective Action`" & Chr(13) & "" & Chr(10) &
"FROM `" _
, _
"" & newfile2 & "`.`NPR Database` `NPR Database`" & Chr(13) & "" &
Chr(10) & "ORDER BY `NPR Database`.`Vendor Code`" _
)
.Name = "Query from MS Access Database"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With

When failing, the bottom line, ".Refresh BackgroundQuery:=False" is the one
that's highlighted.....but then that's the case with almost any error within
this routine.

My "Error Trapping" setting is "Break on unhandled errors".....if my User's
computer has a different setting could that be the reason? (He's tied up
right now so I can't check his setting).

Like I said, the code works fine on my computer, just not on his.

Vaya con Dios,
Chuck, CABGx3
 
You will never get an error until you get to the Refresh line. I would
remove some unecessary line in the command until you get it to work. First
try on the working computer to eliminate as many unecessary items as possible
and check to make sure it still works. then put these changes in the
non-working PC.

Here are things that I think are un-needed

1) DefaultDir=
2) DriverId=281

Also make sure all your variables are references the correct path names like
newfile2.
 
Hi Joel.........
Well, you saved the day, or week, or several weeks that I've been working on
that problem........just as you suggested, I removed everything from the
macro that I could and have it still function on my good machine and then
took it to my User and it ran perfectly on his machine......SUCCESS!!!

Many, many thanks, my friend,
Vaya con Dios,
Chuck, CABGx3
 
Recorded macro aren't very robust. I always edit recorded macros eliminating
the unecessary items and replace SELECTION with absolute cell references.
 
Hi Joe,

My boss saved a macro in our server and he can run the macro in his computer until 8/23.

I can never run the macro from my computer.

But now, my boss is not able to run the Macro either. We havn't updated or installed or changed our computer setting or anything. Not sure why.

This is the error we have got:

Run-Time Error 1004, General ODBC error.
These are the codes highlighted in color when I debug the macro back on July. But now, I can't even debug.

Selection.QueryTable.Refresh BackgroundQuery:=False

Does this tell you something?

I have very little knowledge about program and languages.

Thank you for your help.
 
Hello Joel and CLR..

I am facing the similar problem (the one shown below by CLR).. I am able to run the below macro on my PC; however my colleagues are unable to run the same on their PC's and are getting the ODBC general 1004 error.

Also, i tried running the code post removing DefaultDir and Driver Id as well. Howeverm unable to achieve the sucess.

Kindly help.

COde::

Sub Macro1()
'
' Macro1 Macro
' Macro recorded 10/07/2013 by wadhwra
'
'
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=I:\Sharepoint MIS\Misc\New Microsoft Office Access Application (2).mdb;DefaultDir=I:\Sharepoint MIS\" _
), Array("Misc;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), _
Destination:=Range("A1"))
.CommandText = Array( _
"SELECT `Daily New Trades`.`Centre Code`, `Daily New Trades`.`Product Code`, `Daily New Trades`.`Short Name`, `Daily New Trades`.`Account No`, `Daily New Trades`.`Deal No`, `Daily New Trades`.`Contract" _
, _
" Type Code`, `Daily New Trades`.`Deal Date`, `Daily New Trades`.`Maturity Date`, `Daily New Trades`.`Branch CIS`, `Daily New Trades`.`Legal CIS`, `Daily New Trades`.`MTM GBP`, `Daily New Trades`.`Actu" _
, _
"al MTM GBP`, `Daily New Trades`.`System Code`, `Daily New Trades`.`GRS Trade Key ID`, `Daily New Trades`.`Trade Key ID`, `Daily New Trades`.`Structure Flag`, `Daily New Trades`.`Deal Ticket No / GFX R" _
, _
"ef`, `Daily New Trades`.`PFE GBP`, `Daily New Trades`.`CLU GBP`" & Chr(13) & "" & Chr(10) & "FROM `Daily New Trades` `Daily New Trades`" _
)
.Name = "Query from MS Access Database"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
below is the code for your reference..
Recorded macro aren't very robust. I always edit recorded macros eliminating
the unecessary items and replace SELECTION with absolute cell references.

"CLR" wrote:

> Hi Joel.........
> Well, you saved the day, or week, or several weeks that I've been working on
> that problem........just as you suggested, I removed everything from the
> macro that I could and have it still function on my good machine and then
> took it to my User and it ran perfectly on his machine......SUCCESS!!!
>
> Many, many thanks, my friend,
> Vaya con Dios,
> Chuck, CABGx3
>
>
> "Joel" <[email protected]> wrote in message
> news:[email protected]...
> > You will never get an error until you get to the Refresh line. I would
> > remove some unecessary line in the command until you get it to work.
> > First
> > try on the working computer to eliminate as many unecessary items as
> > possible
> > and check to make sure it still works. then put these changes in the
> > non-working PC.
> >
> > Here are things that I think are un-needed
> >
> > 1) DefaultDir=
> > 2) DriverId=281
> >
> > Also make sure all your variables are references the correct path names
> > like
> > newfile2.
> >
> > "CLR" wrote:
> >
> >> Hi Joel........
> >> Thanks for the comeback.....
> >> Here's the code...
> >> With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
> >> "ODBC;DSN=MS Access Database;DBQ=" & NewFile & ";DefaultDir= " _
> >> ), Array( _
> >> ";DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
> >> )), Destination:=Range("A1"))
> >> .CommandText = Array( _
> >> "SELECT `NPR Database`.`Disposition Date`, `NPR
> >> Database`.`Inspection Date`, `NPR Database`.`NPR Origin`, `NPR
> >> Database`.`NPR
> >> Number`, `NPR Database`.`Part Number`, `NPR Database`.`Serial Number`,
> >> `NPR" _
> >> , _
> >> " Database`.`Vendor Code`, `NPR Database`.`Vendor Name`, `NPR
> >> Database`.`No of Defects`, `NPR Database`.`Qty RTV`, `NPR
> >> Database`.`Defect
> >> Description`, `NPR Database`.`Corrective Action`" & Chr(13) & "" &
> >> Chr(10) &
> >> "FROM `" _
> >> , _
> >> "" & newfile2 & "`.`NPR Database` `NPR Database`" & Chr(13) & ""
> >> &
> >> Chr(10) & "ORDER BY `NPR Database`.`Vendor Code`" _
> >> )
> >> .Name = "Query from MS Access Database"
> >> .FieldNames = True
> >> .RowNumbers = False
> >> .FillAdjacentFormulas = False
> >> .PreserveFormatting = True
> >> .RefreshOnFileOpen = False
> >> .BackgroundQuery = True
> >> .RefreshStyle = xlInsertDeleteCells
> >> .SavePassword = True
> >> .SaveData = True
> >> .AdjustColumnWidth = True
> >> .RefreshPeriod = 0
> >> .PreserveColumnInfo = True
> >> .Refresh BackgroundQuery:=False
> >> End With
> >>
> >> When failing, the bottom line, ".Refresh BackgroundQuery:=False" is the
> >> one
> >> that's highlighted.....but then that's the case with almost any error
> >> within
> >> this routine.
> >>
> >> My "Error Trapping" setting is "Break on unhandled errors".....if my
> >> User's
> >> computer has a different setting could that be the reason? (He's tied up
> >> right now so I can't check his setting).
> >>
> >> Like I said, the code works fine on my computer, just not on his.
> >>
> >> Vaya con Dios,
> >> Chuck, CABGx3
> >>
> >>
> >>
> >> "Joel" wrote:
> >>
> >> > It would help to know which line of code is failing. One thing to
> >> > check is
> >> > the error option in BA. go to VBA menu Tools - Options - General -
> >> > Error
> >> > Trapping.
> >> >
> >> > "CLR" wrote:
> >> >
> >> > > Hi All.........
> >> > > I have a little macro that queries an ACCESS file and returns desired
> >> > > values. The program works fine on my computer, but when my user
> >> > > tries to run
> >> > > it on his computer, (same versoion of Excel, 2000), he gets the
> >> > > following
> >> > > error.
> >> > >
> >> > > Run Time Error '1004' General ODBC Error
> >> > >
> >> > > Obviously some difference between the two machines, but who knows
> >> > > what to do
> >> > > to fix it?
> >> > >
> >> > > TIA
> >> > > Vaya con Dios,
> >> > > Chuck, CABGx3
> >> > >

>
>
>
 
Back
Top