| | |
SQL Insert statement syntax
![]() |
•
•
Join Date: Oct 2008
Posts: 9
Reputation:
Solved Threads: 0
Hello,
I'm using VB6 and SQL Server 2000.
I've got a problem with an insert statement that seems to be randomly failing. Its job is to copy everything from one table into another, removing duplicates using WITH IGNORE_DUP_KEY ON [PRIMARY]. Then my code copies the records back to the original table, duplicate free.
This is my VB code:
The SQL works in TOAD and Query Analyzer, every time. The code works in my program, on the machine I'm using right now, also every time. I've got two other machines I'm using for testing, with their own databases, and this code fails in the program, but works in TOAD or Query Analyzer.
As I'm debugging this today, it is failing. I removed the second pair of parentheses from the code above (I saw an insert statement here today while trying to find the answer, and it didn't have the select statement in parentheses) and it worked. I am now ripping my hair out.
Either form works in TOAD or QA. It would seem that either works in VB, *unless it doesn't feel like working*. Does anyone have any idea about this?
Thanks,
teresa
I'm using VB6 and SQL Server 2000.
I've got a problem with an insert statement that seems to be randomly failing. Its job is to copy everything from one table into another, removing duplicates using WITH IGNORE_DUP_KEY ON [PRIMARY]. Then my code copies the records back to the original table, duplicate free.
This is my VB code:
VB Syntax (Toggle Plain Text)
strSQL = "INSERT CLEAN_MILE_DUPES (" & vbCrLf _ & " CASE_IDENTIFIER" & vbCrLf _ & " ,DOCUMENT_TYPE" & vbCrLf _ & " ,DOCUMENT_NUMBER" & vbCrLf _ & " ,MILESTONE" & vbCrLf _ & " ,MILESTONE_DATE_TYPE" & vbCrLf _ & " ,MILESTONE_DATE)" & vbCrLf _ & "(SELECT CASE_IDENTIFIER" & vbCrLf _ & " ,DOCUMENT_TYPE" & vbCrLf _ & " ,DOCUMENT_NUMBER" & vbCrLf _ & " ,MILESTONE" & vbCrLf _ & " ,MILESTONE_DATE_TYPE" & vbCrLf _ & " ,MILESTONE_DATE " & vbCrLf _ & " FROM CASE_MILESTONE_TEMP)"
The SQL works in TOAD and Query Analyzer, every time. The code works in my program, on the machine I'm using right now, also every time. I've got two other machines I'm using for testing, with their own databases, and this code fails in the program, but works in TOAD or Query Analyzer.
As I'm debugging this today, it is failing. I removed the second pair of parentheses from the code above (I saw an insert statement here today while trying to find the answer, and it didn't have the select statement in parentheses) and it worked. I am now ripping my hair out.
Either form works in TOAD or QA. It would seem that either works in VB, *unless it doesn't feel like working*. Does anyone have any idea about this?
Thanks,
teresa
What is the exact error message that you get? What error number you get from oConn.Errors(0).NativeError (oConn being your connection object)?
A few things come to my mind straight away. Are the tables identical? Is any of the fields char/varchar type and contains '-character in the source table? Null values?
Do you have an error handler in your code where you can set a breakpoint and check, what does the strSQL variable actually hold?
A few things come to my mind straight away. Are the tables identical? Is any of the fields char/varchar type and contains '-character in the source table? Null values?
Do you have an error handler in your code where you can set a breakpoint and check, what does the strSQL variable actually hold?
Teme64 @ Windows Developer Blog
•
•
Join Date: Oct 2008
Posts: 9
Reputation:
Solved Threads: 0
•
•
•
•
What is the exact error message that you get? What error number you get from oConn.Errors(0).NativeError (oConn being your connection object)?
•
•
•
•
A few things come to my mind straight away. Are the tables identical? Is any of the fields char/varchar type and contains '-character in the source table? Null values?
•
•
•
•
Do you have an error handler in your code where you can set a breakpoint and check, what does the strSQL variable actually hold?
I just ran my program on the DB on my machine, and as usual, all SQL worked just fine. I've got to run it on the test machine now, and I'll let you know how it goes.
Thank you for your questions, they help me make sure everything's right! :-)
•
•
Join Date: Oct 2008
Posts: 9
Reputation:
Solved Threads: 0
I'm at a complete loss. The SQL above, and two other similar statements, work fine on my machine. Now, instead of just the one statement above giving me problems, all three are. They act as if they are copying records to the CLEAN table, then truncate the CASE table, then when it's time to copy the records back from the CLEAN table to the CASE table, there are no records to copy back! I don't understand!
I created two new databases for two new datasets, but these SQL statements work FINE in those databases. Does anyone have any idea?
Thanks,
teresa
I created two new databases for two new datasets, but these SQL statements work FINE in those databases. Does anyone have any idea?
Thanks,
teresa
Last edited by pixelmeow; Dec 3rd, 2008 at 4:41 pm. Reason: bad grammar
I'm trying to re-produce your case.
Here's my simplified tables.
Temp-table: and Clean-table: with CASE_IDENTIFIER as a duplicate key:
and I tested with this code:
The error I get in the Breakpoint-line is:
and that comes from a duplicate CASE_IDENTIFIER-field value from the Temp-table. And now the Case-table has all the rows from the Temp-table, except one dropped duplicate, and the column DROP_THIS_FIELD is missing of course.
Is this anything similar to your code?
(I tested with SQL Server 2005 EE, but that shouldn't make any difference)
Here's my simplified tables.
Temp-table:
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
USE [EditorTest] GO /****** Object: Table [dbo].[CASE_MILESTONE_TEMP] Script Date: 12/04/2008 10:35:36 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[CASE_MILESTONE_TEMP]( [CASE_IDENTIFIER] [int] NULL, [MILESTONE_DATE] [datetime] NULL, [TEXT_FIELD] [varchar](50) NULL, [DROP_THIS_FIELD] [varchar](50) NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
USE [EditorTest] GO /****** Object: Table [dbo].[CLEAN_MILE_DUPES] Script Date: 12/04/2008 10:35:05 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[CLEAN_MILE_DUPES]( [CASE_IDENTIFIER] [int] NULL, [MILESTONE_DATE] [datetime] NULL, [TEXT_FIELD] [varchar](50) NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
USE [EditorTest] GO CREATE UNIQUE NONCLUSTERED INDEX [test] ON [dbo].[CLEAN_MILE_DUPES] ( [CASE_IDENTIFIER] ASC ) WITH (IGNORE_DUP_KEY = ON)
VB Syntax (Toggle Plain Text)
Option Explicit Private oConn As ADODB.Connection Private oCmd As ADODB.Command Private Sub Command1_Click() ' Dim strSQL As String Dim ConStr As String On Error GoTo ErrorHandler ConStr = "PROVIDER=SQLOLEDB;Data Source=JASMIN\SQLEXPRESS; INITIAL CATALOG=EditorTest; User ID=XXXXXXX; Password=XXXXXXX;" Set oConn = New ADODB.Connection oConn.Open (ConStr) strSQL = "INSERT CLEAN_MILE_DUPES (" & vbCrLf _ & " CASE_IDENTIFIER" & vbCrLf _ & " ,MILESTONE_DATE" & vbCrLf _ & " ,TEXT_FIELD) " & vbCrLf _ & "(SELECT CASE_IDENTIFIER" & vbCrLf _ & " ,MILESTONE_DATE" & vbCrLf _ & " ,TEXT_FIELD " & vbCrLf _ & " FROM CASE_MILESTONE_TEMP)" Set oCmd = New ADODB.Command oCmd.CommandText = strSQL oCmd.CommandType = adCmdText Set oCmd.ActiveConnection = oConn oCmd.Execute Sub_Exit: oConn.Close Exit Sub ErrorHandler: ' Breakpoint here Resume Sub_Exit End Sub
? oConn.Errors(0).Description Duplicate key was ignored.
Is this anything similar to your code?
(I tested with SQL Server 2005 EE, but that shouldn't make any difference)
Last edited by Teme64; Dec 4th, 2008 at 4:54 am. Reason: Added DB info
Teme64 @ Windows Developer Blog
•
•
Join Date: Oct 2008
Posts: 9
Reputation:
Solved Threads: 0
•
•
•
•
I'm trying to re-produce your case.
Here's my simplified tables.
Temp-table:Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
USE [EditorTest] GO /****** Object: Table [dbo].[CASE_MILESTONE_TEMP] Script Date: 12/04/2008 10:35:36 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[CASE_MILESTONE_TEMP]( [CASE_IDENTIFIER] [int] NULL, [MILESTONE_DATE] [datetime] NULL, [TEXT_FIELD] [varchar](50) NULL, [DROP_THIS_FIELD] [varchar](50) NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
CREATE TABLE [CASE_MILESTONE_TEMP] ( [CASE_IDENTIFIER] [varchar] (10) NULL, [DOCUMENT_TYPE] [varchar] (3) NULL , [DOCUMENT_NUMBER] [varchar] (3) NULL, [MILESTONE] [varchar] (10) NULL, [MILESTONE_DATE_TYPE] [varchar] (1) NULL, [MILESTONE_DATE] [varchar] (14) NULL, [MILESTONE_REMARKS] [varchar] (500) NULL ) ON [PRIMARY] GO
•
•
•
•
and Clean-table:Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
USE [EditorTest] GO /****** Object: Table [dbo].[CLEAN_MILE_DUPES] Script Date: 12/04/2008 10:35:05 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[CLEAN_MILE_DUPES]( [CASE_IDENTIFIER] [int] NULL, [MILESTONE_DATE] [datetime] NULL, [TEXT_FIELD] [varchar](50) NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
CREATE TABLE [CLEAN_MILE_DUPES] ( [ID] [int] NULL , [CASE_IDENTIFIER] [varchar] (10) NULL, [DOCUMENT_TYPE] [varchar] (3) NULL, [DOCUMENT_NUMBER] [varchar] (3) NULL, [MILESTONE] [varchar] (10) NULL, [MILESTONE_DATE_TYPE] [varchar] (1) NULL, [MILESTONE_DATE] [varchar] (10) NULL ) ON [PRIMARY] GO
•
•
•
•
with CASE_IDENTIFIER as a duplicate key:
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
USE [EditorTest] GO CREATE UNIQUE NONCLUSTERED INDEX [test] ON [dbo].[CLEAN_MILE_DUPES] ( [CASE_IDENTIFIER] ASC ) WITH (IGNORE_DUP_KEY = ON)
Visual Basic 4 / 5 / 6 Syntax (Toggle Plain Text)
CREATE UNIQUE INDEX [RM_MILE_DUPES] ON [dbo].[CLEAN_MILE_DUPES] ( [CASE_IDENTIFIER] ,[DOCUMENT_TYPE] ,[DOCUMENT_NUMBER] ,[ID] ,[MILESTONE] ,[MILESTONE_DATE_TYPE] ,[MILESTONE_DATE] ) WITH IGNORE_DUP_KEY ON [PRIMARY] GO
•
•
•
•
and I tested with this code:
The error I get in the Breakpoint-line is:VB Syntax (Toggle Plain Text)
Option Explicit Private oConn As ADODB.Connection Private oCmd As ADODB.Command Private Sub Command1_Click() ' Dim strSQL As String Dim ConStr As String On Error GoTo ErrorHandler ConStr = "PROVIDER=SQLOLEDB;Data Source=JASMIN\SQLEXPRESS; INITIAL CATALOG=EditorTest; User ID=XXXXXXX; Password=XXXXXXX;" Set oConn = New ADODB.Connection oConn.Open (ConStr) strSQL = "INSERT CLEAN_MILE_DUPES (" & vbCrLf _ & " CASE_IDENTIFIER" & vbCrLf _ & " ,MILESTONE_DATE" & vbCrLf _ & " ,TEXT_FIELD) " & vbCrLf _ & "(SELECT CASE_IDENTIFIER" & vbCrLf _ & " ,MILESTONE_DATE" & vbCrLf _ & " ,TEXT_FIELD " & vbCrLf _ & " FROM CASE_MILESTONE_TEMP)" Set oCmd = New ADODB.Command oCmd.CommandText = strSQL oCmd.CommandType = adCmdText Set oCmd.ActiveConnection = oConn oCmd.Execute Sub_Exit: oConn.Close Exit Sub ErrorHandler: ' Breakpoint here Resume Sub_Exit End Sub
and that comes from a duplicate CASE_IDENTIFIER-field value from the Temp-table. And now the Case-table has all the rows from the Temp-table, except one dropped duplicate, and the column DROP_THIS_FIELD is missing of course.? oConn.Errors(0).Description Duplicate key was ignored.
Is this anything similar to your code?
(I tested with SQL Server 2005 EE, but that shouldn't make any difference)
VB Syntax (Toggle Plain Text)
Option Explicit Public cn As New ADODB.Connection Public cmd As New ADODB.Command Public rs As New ADODB.Recordset Private Sub removeMileDupes() Dim strSQL As String If cn.State = 0 Then 'fileset says which set of files are being loaded at the moment Call doDBaction("openDB", fileSet) End If 'clean_dupes tables have ignore duplicates flag on 'vb catches the error and stops 'so resume next. On Error Resume Next strSQL = "TRUNCATE TABLE CLEAN_MILE_DUPES" cmd.CommandText = strSQL cmd.CommandType = adCmdText Set rs = cmd.Execute strSQL = "INSERT CLEAN_MILE_DUPES (" & vbCrLf _ & " CASE_IDENTIFIER" & vbCrLf _ & " ,DOCUMENT_TYPE" & vbCrLf _ & " ,DOCUMENT_NUMBER" & vbCrLf _ & " ,MILESTONE" & vbCrLf _ & " ,MILESTONE_DATE_TYPE" & vbCrLf _ & " ,MILESTONE_DATE)" & vbCrLf _ & "SELECT CASE_IDENTIFIER" & vbCrLf _ & " ,DOCUMENT_TYPE" & vbCrLf _ & " ,DOCUMENT_NUMBER" & vbCrLf _ & " ,MILESTONE" & vbCrLf _ & " ,MILESTONE_DATE_TYPE" & vbCrLf _ & " ,MILESTONE_DATE " & vbCrLf _ & " FROM CASE_MILESTONE_TEMP" cmd.CommandText = strSQL cmd.CommandType = adCmdText Set rs = cmd.Execute 'THIS ^^^ IS THE COMMAND THAT IS FAILING. IT HANGS FOR 5 OR 'MORE SECONDS. DOING COUNT(*) ON THAT TABLE GIVES 0 'RECORDS. THEREFORE THE FOLLOWING CODE JUST REMOVES 'EVERYTHING FROM THE TEMP TABLE. strSQL = "TRUNCATE TABLE CASE_MILESTONE_TEMP" cmd.CommandText = strSQL cmd.CommandType = adCmdText Set rs = cmd.Execute strSQL = "INSERT CASE_MILESTONE_TEMP (" & vbCrLf _ & " CASE_IDENTIFIER" & vbCrLf _ & " ,DOCUMENT_TYPE" & vbCrLf _ & " ,DOCUMENT_NUMBER" & vbCrLf _ & " ,MILESTONE" & vbCrLf _ & " ,MILESTONE_DATE_TYPE" & vbCrLf _ & " ,MILESTONE_DATE)" & vbCrLf _ & " SELECT CASE_IDENTIFIER" & vbCrLf _ & " ,DOCUMENT_TYPE" & vbCrLf _ & " ,DOCUMENT_NUMBER" & vbCrLf _ & " ,MILESTONE" & vbCrLf _ & " ,MILESTONE_DATE_TYPE" & vbCrLf _ & " ,MILESTONE_DATE " & vbCrLf _ & " FROM CLEAN_MILE_DUPES" cmd.CommandText = strSQL cmd.CommandType = adCmdText Set rs = cmd.Execute strSQL = "TRUNCATE TABLE CLEAN_MILE_DUPES" cmd.CommandText = strSQL cmd.CommandType = adCmdText Set rs = cmd.Execute End Sub
Thank you so much for your help!
Here's a slightly modified code:
I tried your code and it hang up. Then I removed On Error Resume Next and started to trap errors. First thing that failed in the code was missing
Second, I used a local command object. You may use a global one, but you have to make sure that it's valid in your subroutine. Besides, you can always pass command and/or connection objects as ByRef parameters rather than use global ones.
I moved On Error Resume Next to the only place where it's actually needed (remove duplicates) and then turned error handling back.
Now the code works just fine for me. I hope this helps you a bit
VB Syntax (Toggle Plain Text)
Option Explicit Public cn As New ADODB.Connection Public cmd As New ADODB.Command Public rs As New ADODB.Recordset Private Sub removeMileDupes() Dim strSQL As String ' Dim ConStr As String Dim oCmd As ADODB.Command ' Use a local object. You may use global, but make sure you know what it does :) ' Add error handler On Error GoTo ErrorHandler ' I had to set and open connection object in here. You may do it before calling this sub ConStr = "PROVIDER=SQLOLEDB;Data Source=JASMIN\SQLEXPRESS; INITIAL CATALOG=EditorTest; User ID=XXXXXX; Password=XXXXXX;" Set oConn = New ADODB.Connection oConn.Open ConStr Set oCmd = New ADODB.Command Set oCmd.ActiveConnection = oConn ' Set a connection for the command ' I think you might have missed this OR the connection's state wasn't Open ' I commented this out. If this opens the connection, you may have to move Set oCmd.ActiveConnection = oConn after this block If cn.State = 0 Then 'fileset says which set of files are being loaded at the moment Call doDBaction("openDB", fileSet) End If 'clean_dupes tables have ignore duplicates flag on 'vb catches the error and stops 'so resume next. ' No need to Resume Next in here 'On Error Resume Next strSQL = "TRUNCATE TABLE CLEAN_MILE_DUPES" oCmd.CommandText = strSQL oCmd.CommandType = adCmdText Set rs = oCmd.Execute ' strSQL = "INSERT CLEAN_MILE_DUPES (" & vbCrLf _ ' & " CASE_IDENTIFIER" & vbCrLf _ ' & " ,DOCUMENT_TYPE" & vbCrLf _ ' & " ,DOCUMENT_NUMBER" & vbCrLf _ ' & " ,MILESTONE" & vbCrLf _ ' & " ,MILESTONE_DATE_TYPE" & vbCrLf _ ' & " ,MILESTONE_DATE)" & vbCrLf _ ' & "SELECT CASE_IDENTIFIER" & vbCrLf _ ' & " ,DOCUMENT_TYPE" & vbCrLf _ ' & " ,DOCUMENT_NUMBER" & vbCrLf _ ' & " ,MILESTONE" & vbCrLf _ ' & " ,MILESTONE_DATE_TYPE" & vbCrLf _ ' & " ,MILESTONE_DATE " & vbCrLf _ ' & " FROM CASE_MILESTONE_TEMP" ' My "simplified" table strSQL = "INSERT CLEAN_MILE_DUPES (" & vbCrLf _ & " CASE_IDENTIFIER" & vbCrLf _ & " ,MILESTONE_DATE" & vbCrLf _ & " ,TEXT_FIELD) " & vbCrLf _ & "(SELECT CASE_IDENTIFIER" & vbCrLf _ & " ,MILESTONE_DATE" & vbCrLf _ & " ,TEXT_FIELD " & vbCrLf _ & " FROM CASE_MILESTONE_TEMP)" oCmd.CommandText = strSQL oCmd.CommandType = adCmdText ' Now, here is the only place where Resume Next is needed On Error Resume Next Set rs = oCmd.Execute On Error GoTo ErrorHandler 'THIS ^^^ IS THE COMMAND THAT IS FAILING. IT HANGS FOR 5 OR 'MORE SECONDS. DOING COUNT(*) ON THAT TABLE GIVES 0 'RECORDS. THEREFORE THE FOLLOWING CODE JUST REMOVES 'EVERYTHING FROM THE TEMP TABLE. strSQL = "TRUNCATE TABLE CASE_MILESTONE_TEMP" oCmd.CommandText = strSQL oCmd.CommandType = adCmdText Set rs = oCmd.Execute ' My "simplified" table again. I dropped your strSQL somewhere... strSQL = "INSERT CASE_MILESTONE_TEMP (" & vbCrLf _ & " CASE_IDENTIFIER" & vbCrLf _ & " ,MILESTONE_DATE" & vbCrLf _ & " ,TEXT_FIELD) " & vbCrLf _ & " SELECT CASE_IDENTIFIER" & vbCrLf _ & " ,MILESTONE_DATE" & vbCrLf _ & " ,TEXT_FIELD " & vbCrLf _ & " FROM CLEAN_MILE_DUPES" oCmd.CommandText = strSQL oCmd.CommandType = adCmdText Set rs = oCmd.Execute strSQL = "TRUNCATE TABLE CLEAN_MILE_DUPES" oCmd.CommandText = strSQL oCmd.CommandType = adCmdText Set rs = oCmd.Execute Sub_Exit: oConn.Close Exit Sub ErrorHandler: ' Handle errors here (this is just to trap errors) Resume Sub_Exit End Sub
Set oCmd.ActiveConnection = oConn i.e. command object did not have an associated connection object. Second, I used a local command object. You may use a global one, but you have to make sure that it's valid in your subroutine. Besides, you can always pass command and/or connection objects as ByRef parameters rather than use global ones.
I moved On Error Resume Next to the only place where it's actually needed (remove duplicates) and then turned error handling back.
Now the code works just fine for me. I hope this helps you a bit
Teme64 @ Windows Developer Blog
•
•
Join Date: Oct 2008
Posts: 9
Reputation:
Solved Threads: 0
•
•
•
•
Here's a slightly modified code:
VB Syntax (Toggle Plain Text)
' strSQL = "INSERT CLEAN_MILE_DUPES (" & vbCrLf _ ' & " CASE_IDENTIFIER" & vbCrLf _ ' & " ,DOCUMENT_TYPE" & vbCrLf _ ' & " ,DOCUMENT_NUMBER" & vbCrLf _ ' & " ,MILESTONE" & vbCrLf _ ' & " ,MILESTONE_DATE_TYPE" & vbCrLf _ ' & " ,MILESTONE_DATE)" & vbCrLf _ ' & "SELECT CASE_IDENTIFIER" & vbCrLf _ ' & " ,DOCUMENT_TYPE" & vbCrLf _ ' & " ,DOCUMENT_NUMBER" & vbCrLf _ ' & " ,MILESTONE" & vbCrLf _ ' & " ,MILESTONE_DATE_TYPE" & vbCrLf _ ' & " ,MILESTONE_DATE " & vbCrLf _ ' & " FROM CASE_MILESTONE_TEMP" ' My "simplified" table strSQL = "INSERT CLEAN_MILE_DUPES (" & vbCrLf _ & " CASE_IDENTIFIER" & vbCrLf _ & " ,MILESTONE_DATE" & vbCrLf _ & " ,TEXT_FIELD) " & vbCrLf _ & "(SELECT CASE_IDENTIFIER" & vbCrLf _ & " ,MILESTONE_DATE" & vbCrLf _ & " ,TEXT_FIELD " & vbCrLf _ & " FROM CASE_MILESTONE_TEMP)" oCmd.CommandText = strSQL oCmd.CommandType = adCmdText ' Now, here is the only place where Resume Next is needed On Error Resume Next Set rs = oCmd.Execute On Error GoTo ErrorHandler
•
•
•
•
I tried your code and it hang up. Then I removed On Error Resume Next and started to trap errors. First thing that failed in the code was missingSet oCmd.ActiveConnection = oConni.e. command object did not have an associated connection object.
Second, I used a local command object. You may use a global one, but you have to make sure that it's valid in your subroutine. Besides, you can always pass command and/or connection objects as ByRef parameters rather than use global ones.
I moved On Error Resume Next to the only place where it's actually needed (remove duplicates) and then turned error handling back.
Now the code works just fine for me. I hope this helps you a bit
Last edited by pixelmeow; Dec 4th, 2008 at 12:34 pm. Reason: close CODE tag
![]() |
Similar Threads
- Syntax error in INSERT INTO statement (Java)
- Help with nested sql statements (VB.NET)
- problem with quotes in SQL statement (Visual Basic 4 / 5 / 6)
- insert into sql select statement (Visual Basic 4 / 5 / 6)
- Autonumber in a SQL Server table (MS SQL)
- Please Help Me, I Am to Be Fired! (ASP.NET)
- SQL problem - table names as variables (MS SQL)
- sql statement (Visual Basic 4 / 5 / 6)
- syntax error: i cant find it..HELP! (ASP)
Other Threads in the Visual Basic 4 / 5 / 6 Forum
- Previous Thread: VB.. help please
- Next Thread: need some help
| Thread Tools | Search this Thread |
* 6 429 2007 access activex add age application basic beginner birth bmp calculator cd cells.find click client code college component connection connectionproblemusingvb6usingoledb copy creat ctrl+f data database datareport date delete dissertations dissertationthesis dissertationtopic edit error excel excelmacro file filename form hardware header iamthwee image inboxinvb internetfiledownload keypress label listbox listview liveperson login looping machine microsoft movingranges number objectinsert open oracle password prime program prompt range-objects readfile reading record refresh remotesqlserverdatabase report save search sendbyte sites sort sql sql2008 sqlserver subroutine tags textbox time urldownloadtofile vb vb6 vb6.0 vba visual visualbasic visualbasic6 web window windows





