Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default Excel AddNew QueryTable '1004' problem

Hi guys. I'm a newbie so please forgive this - but I don't know what
else to do. This spreadsheet is from hell.
I have been having such a problem with automating this excel
spreadsheet. The users wanted to update a field in an oracle table
from this spreadsheet. The problem is either with the refresh or the
loop, but it will only (intermittently) update the first record (if I
comment out the refresh background query) and skip the rest, or if I
leave refresh on or set it to false, then it gives me the dreaded
'1004' error.

I know parameter queries are tricky with oracle/microsoft OLE DB for
Oracle. But I don't see a reason why this should blow up like it
does. With the .Refresh, it goes straight to the error handler with
the prompt and the '1004' error.

Has anyone had this problem? If anyone has, could you help this
newb? I'm desperate.

I attached the spaghetti code below. I inherited this learning
opportunity. I'm sure you all know what that's like. It's fun. I
apologize for the following:


Sub TCN_Update_Sub()
On Error GoTo Error_Handler

If EventsTurnedOffBy = "" Then
objExcel.EnableEvents = False
objExcel.ScreenUpdating = False
EventsTurnedOffBy = "TCN_Update_Sub"
End If

' The TCN is updated in the Table without manual user intervention.

If v_instance = "t4" Then
strCnn = "OLEDB;Provider=MSDAORA;Data Source=dev_t4;User
ID=A_USER;Password=test1234"
Else
strCnn = "OLEDB;Provider=MSDAORA;Data Source=prod_p4;User
ID=A_USER;Password=prod1234"
End If

Set objMyQueryTable = ActiveSheet.QueryTables.Add( _
Connection:=strCnn, Destination:=Range("FA1"))

With objMyQueryTable
For Each v_cell In
objExcel.Workbooks(v_coal_spreadsheet).Worksheets( "LAB").Range("W3:W"
& LastVendorRow).Cells
objExcel.Cells(v_cell.Row,
TrafficControlNoCol).Interior.ColorIndex = xlNone
v_comment = ""
objExcel.Range("CS" & v_cell.Row).NumberFormat = "0"
' No Sample number
If Len(objExcel.Cells(v_cell.Row, LabIDCol)) = 0 Then
GoTo Get_Next_TCN_Cell
End If
' No Traffic Control Number data to update
If Len(objExcel.Cells(v_cell.Row, TrafficControlNoCol)) = 0
Then
GoTo Get_Next_TCN_Cell
End If
' PrelogcoalCol Values a
' 0 means that sample is already registered and the TCN can
be updated.
' 1 means that that the sample is in PRELOG status (not
registered)
If objExcel.Cells(v_cell.Row, PreLogCoalCol) < 0 Then
GoTo Get_Next_TCN_Cell
End If

If objExcel.Cells(v_cell.Row, TrafficControlNoCol).Value =
objExcel.Range("CS" & v_cell.Row).Value Then
v_comment = v_comment & "TCN Not Updated because Labworks
already contains this value." & Chr(10)
objExcel.Cells(v_cell.Row,
TrafficControlNoCol).ClearComments
objExcel.Cells(v_cell.Row, TrafficControlNoCol).AddComment
v_comment
objExcel.Range(Cells(v_cell.Row, PlantIDCol),
Cells(v_cell.Row, FlatFileProcessedCol)).Interior.ColorIndex = 35
GoTo Get_Next_TCN_Cell
End If

objExcel.Range(Cells(v_cell.Row, PlantIDCol),
Cells(v_cell.Row, FlatFileProcessedCol)).Interior.ColorIndex = xlNone
objExcel.Goto
Reference:=objExcel.Worksheets("LAB").Range(Cells( v_cell.Row,
LabIDCol)), Scroll:=True

ThisWorkbook.Worksheets("TVA_LAB").Cells(v_cell.Ro w,
TrafficControlNoCol).ClearComments

If Cells(v_cell.Row, DataErrorCol).Value = 0 Then
sq_upd1 = "update labworks.suserflds " _
& " set traf_cont_numb = " + UCase(Cells(v_cell.Row,
TrafficControlNoCol).Value) _
& " where sampno = '" _
& Cells(v_cell.Row, LabIDCol).Value & "' "

sq_upd2 = "update labworks.sample " _
& " set moddate = sysdate " _
& " where sampno = '" _
& Cells(v_cell.Row, LabIDCol).Value & "' "

.Name = "Query1"
.CommandText = Array(sq_upd1)
.CommandType = xlCmdDefault
.Refresh False
.CommandText = Array(sq_upd2)
.RefreshOnChange = True
objExcel.Range("CS" & v_cell.Row).Value =
objExcel.Cells(v_cell.Row, TrafficControlNoCol).Value
End If

Get_Next_TCN_Cell:

Next v_cell

End With

If EventsTurnedOffBy = "TCN_Update_Sub" Then
objExcel.EnableEvents = True
objExcel.ScreenUpdating = True
EventsTurnedOffBy = ""
End If

subroutine_end:

Exit Sub

Error_Handler:

If EventsTurnedOffBy = "TCN_Update_Sub" Then
objExcel.EnableEvents = True
objExcel.ScreenUpdating = True
EventsTurnedOffBy = ""
End If

MsgBox Error, , "TCN Update"
MsgBox "An error has occurred." & vbCr & Err.Number & vbCr &
Err.Description
objExcel.Range(Cells(v_cell.Row, PlantIDCol), Cells(v_cell.Row,
FlatFileProcessedCol)).Interior.ColorIndex = 35
v_comment = v_comment & "TCN NOT Updated" & Chr(10)
objExcel.Cells(v_cell.Row, TrafficControlNoCol).AddComment
v_comment

End Sub

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default Excel AddNew QueryTable '1004' problem

On Nov 6, 3:13 pm, Holly wrote:
Hi guys. I'm a newbie so please forgive this - but I don't know what
else to do. This spreadsheet is from hell.
I have been having such a problem with automating this excel
spreadsheet. The users wanted to update a field in an oracle table
from this spreadsheet. The problem is either with the refresh or the
loop, but it will only (intermittently) update the first record (if I
comment out the refresh background query) and skip the rest, or if I
leave refresh on or set it to false, then it gives me the dreaded
'1004' error.

I know parameter queries are tricky with oracle/microsoft OLE DB for
Oracle. But I don't see a reason why this should blow up like it
does. With the .Refresh, it goes straight to the error handler with
the prompt and the '1004' error.

Has anyone had this problem? If anyone has, could you help this
newb? I'm desperate.

I attached the spaghetti code below. I inherited this learning
opportunity. I'm sure you all know what that's like. It's fun. I
apologize for the following:

Sub TCN_Update_Sub()
On Error GoTo Error_Handler

If EventsTurnedOffBy = "" Then
objExcel.EnableEvents = False
objExcel.ScreenUpdating = False
EventsTurnedOffBy = "TCN_Update_Sub"
End If

' The TCN is updated in the Table without manual user intervention.

If v_instance = "t4" Then
strCnn = "OLEDB;Provider=MSDAORA;Data Source=dev_t4;User
ID=A_USER;Password=test1234"
Else
strCnn = "OLEDB;Provider=MSDAORA;Data Source=prod_p4;User
ID=A_USER;Password=prod1234"
End If

Set objMyQueryTable = ActiveSheet.QueryTables.Add( _
Connection:=strCnn, Destination:=Range("FA1"))

With objMyQueryTable
For Each v_cell In
objExcel.Workbooks(v_coal_spreadsheet).Worksheets( "LAB").Range("W3:W"
& LastVendorRow).Cells
objExcel.Cells(v_cell.Row,
TrafficControlNoCol).Interior.ColorIndex = xlNone
v_comment = ""
objExcel.Range("CS" & v_cell.Row).NumberFormat = "0"
' No Sample number
If Len(objExcel.Cells(v_cell.Row, LabIDCol)) = 0 Then
GoTo Get_Next_TCN_Cell
End If
' No Traffic Control Number data to update
If Len(objExcel.Cells(v_cell.Row, TrafficControlNoCol)) = 0
Then
GoTo Get_Next_TCN_Cell
End If
' PrelogcoalCol Values a
' 0 means that sample is already registered and the TCN can
be updated.
' 1 means that that the sample is in PRELOG status (not
registered)
If objExcel.Cells(v_cell.Row, PreLogCoalCol) < 0 Then
GoTo Get_Next_TCN_Cell
End If

If objExcel.Cells(v_cell.Row, TrafficControlNoCol).Value =
objExcel.Range("CS" & v_cell.Row).Value Then
v_comment = v_comment & "TCN Not Updated because Labworks
already contains this value." & Chr(10)
objExcel.Cells(v_cell.Row,
TrafficControlNoCol).ClearComments
objExcel.Cells(v_cell.Row, TrafficControlNoCol).AddComment
v_comment
objExcel.Range(Cells(v_cell.Row, PlantIDCol),
Cells(v_cell.Row, FlatFileProcessedCol)).Interior.ColorIndex = 35
GoTo Get_Next_TCN_Cell
End If

objExcel.Range(Cells(v_cell.Row, PlantIDCol),
Cells(v_cell.Row, FlatFileProcessedCol)).Interior.ColorIndex = xlNone
objExcel.Goto
Reference:=objExcel.Worksheets("LAB").Range(Cells( v_cell.Row,
LabIDCol)), Scroll:=True

ThisWorkbook.Worksheets("TVA_LAB").Cells(v_cell.Ro w,
TrafficControlNoCol).ClearComments

If Cells(v_cell.Row, DataErrorCol).Value = 0 Then
sq_upd1 = "update labworks.suserflds " _
& " set traf_cont_numb = " + UCase(Cells(v_cell.Row,
TrafficControlNoCol).Value) _
& " where sampno = '" _
& Cells(v_cell.Row, LabIDCol).Value & "' "

sq_upd2 = "update labworks.sample " _
& " set moddate = sysdate " _
& " where sampno = '" _
& Cells(v_cell.Row, LabIDCol).Value & "' "

.Name = "Query1"
.CommandText = Array(sq_upd1)
.CommandType = xlCmdDefault
.Refresh False
.CommandText = Array(sq_upd2)
.RefreshOnChange = True
objExcel.Range("CS" & v_cell.Row).Value =
objExcel.Cells(v_cell.Row, TrafficControlNoCol).Value
End If

Get_Next_TCN_Cell:

Next v_cell

End With

If EventsTurnedOffBy = "TCN_Update_Sub" Then
objExcel.EnableEvents = True
objExcel.ScreenUpdating = True
EventsTurnedOffBy = ""
End If

subroutine_end:

Exit Sub

Error_Handler:

If EventsTurnedOffBy = "TCN_Update_Sub" Then
objExcel.EnableEvents = True
objExcel.ScreenUpdating = True
EventsTurnedOffBy = ""
End If

MsgBox Error, , "TCN Update"
MsgBox "An error has occurred." & vbCr & Err.Number & vbCr &
Err.Description
objExcel.Range(Cells(v_cell.Row, PlantIDCol), Cells(v_cell.Row,
FlatFileProcessedCol)).Interior.ColorIndex = 35
v_comment = v_comment & "TCN NOT Updated" & Chr(10)
objExcel.Cells(v_cell.Row, TrafficControlNoCol).AddComment
v_comment

End Sub


In case anyone else has a problem - I think we've figured it out.
The OLEDB driver has an issue with the refresh statement, and we
changed the connection to an ODBC connection.
We also had a "timing" issue with the database, so we put in some
waits after the refresh background query statements, and then a cancel
refresh to get around the problem.


Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
QueryTable.add naming problem (web query) PeacefulAnd4getful Excel Programming 2 August 27th 10 08:30 AM
QueryTable date problem Tom Excel Programming 0 May 3rd 06 02:43 PM
Excel - VBA - QueryTable error 1004 Vuillermet Jacques Excel Programming 0 March 2nd 05 02:35 PM
Selection.QueryTable problem JenC Excel Programming 2 January 7th 05 05:32 AM
RunTime Error "1004" QueryTable is Invalid Devendra[_3_] Excel Programming 1 January 21st 04 11:01 AM


All times are GMT +1. The time now is 02:25 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"