Hello,
I have an audit table into which I insert information about the use of
the application. This works sometimes and other times fails. I cannot
find any reason for it failing. It is always given the information.
Here are the errors I receive;
---------------------------
Exception Message: Procedure or function usp_UseAudit_ins has too many
arguments specified.
---------------------------
---------------------------
Exception Source: .Net SqlClient Data Provider
---------------------------
---------------------------
Exception StackTrace: at
System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows,
DataTableMapping tableMapping) at
System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String
srcTable) at CLIP.UseageAudit.InsertAuditRecord(String selection,
String version)
---------------------------
The call to the method
\\
InsertAuditRecord("ManageJobs", _version)
//
The Method
\\
Friend Sub InsertAuditRecord(ByVal selection As String, ByVal version
As String)
Call DAL.InsertUseAudit()
Dim row As DataRow = _dataSet1.Tables("tblUseAudit").NewRow
row("pkUseAuditId") = Guid.NewGuid.ToString
row("ClipUser") = SystemInformation.UserName.ToString
row("version") = version
row("DateTime") = Now
row("Selection") = selection
_dataSet1.Tables("tblUseAudit").Rows.Add(row)
Dim dsDataChanges As New CLIP.dsTables
dsDataChanges = CType(_dataSet1.GetChanges, CLIP.dsTables)
If (Not (dsDataChanges) Is Nothing) Then
DAL.daUseAudit.Update(dsDataChanges, "tblUseAudit")
_dataSet1.Merge(dsDataChanges)
_dataSet1.AcceptChanges()
//
The DataAccess (DAL)
\\
Public Sub InsertUseAudit()
With cmdUseAudit_Ins
.CommandType = CommandType.StoredProcedure
.CommandText = "usp_UseAudit_ins"
.Connection = sqlConn
With cmdUseAudit_Ins.Parameters
' No return required - Does not work even with this incuded
'.Add(New SqlParameter("@RETURN_VALUE", SqlDbType.Int,
'4, ParameterDirection.ReturnValue, False, CType(0, Byte),
'CType(0, Byte), "", DataRowVersion.Current, Nothing))
.Add(New SqlParameter("@pkUseAuditId", SqlDbType.VarChar, 36,
"pkUseAuditId"))
.Add(New SqlParameter("@ClipUser", SqlDbType.VarChar, 50,
"ClipUser"))
.Add(New SqlParameter("@version", SqlDbType.VarChar, 50, "version"))
.Add(New SqlParameter("@DateTime", SqlDbType.SmallDateTime, 4,
"DateTime"))
.Add(New SqlParameter("@Selection", SqlDbType.VarChar, 50,
"Selection"))
End With
End With
End Sub
//
Parts of the DataSet
\\
Friend tblUseAudit As New DataTable
Me.tblUseAudit = Me.Tables.Add("tblUseAudit")
' tblUseAudit
Dim pkUseAuditId As DataColumn =
Me.tblUseAudit.Columns.Add("pkUseAuditId", GetType(String))
pkUseAuditId.MaxLength = 36
pkUseAuditId.AllowDBNull = False
Dim ClipUser As DataColumn = Me.tblUseAudit.Columns.Add("ClipUser",
GetType(String))
ClipUser.MaxLength = 50
ClipUser.AllowDBNull = False
Dim version As DataColumn = Me.tblUseAudit.Columns.Add("version",
GetType(String))
version.MaxLength = 50
version.AllowDBNull = False
Dim DateTime As DataColumn = Me.tblUseAudit.Columns.Add("DateTime",
GetType(DateTime))
DateTime.AllowDBNull = False
Dim Selection As DataColumn = Me.tblUseAudit.Columns.Add("Selection",
GetType(String))
Selection.MaxLength = 50
Selection.AllowDBNull = False
pkUseAuditId.ReadOnly = True
tblUseAudit.PrimaryKey = New DataColumn()
{tblUseAudit.Columns("pkUseAuditId")}
The Table
\\
CREATE TABLE [tblUseAudit] (
[pkUseAuditId] [varchar] (36) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[ClipUser] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[version] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
,
[DateTime] [smalldatetime] NOT NULL ,
[Selection] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL
) ON [PRIMARY]
GO
//
The Stored Procedure
\\
CREATE PROCEDURE dbo.usp_UseAudit_ins(
@pkUseAuditId varchar(36),
@ClipUser varchar(50),
@version varchar(50),
@DateTime smalldatetime,
@Selection varchar(50)
) AS
SET NOCOUNT OFF;
INSERT INTO tblUseAudit(
pkUseAuditId,
ClipUser,
version,
DateTime,
Selection
) VALUES (
@pkUseAuditId,
@ClipUser,
@version,
@DateTime,
@Selection
)
/** no return required - doesn't work even with this included.
;
SELECT
pkUseAuditId,
ClipUser,
version,
DateTime,
Selection
FROM tblUseAudit
WHERE
(pkUseAuditId = @pkUseAuditId)
**/
GO
//
What could cause this error?
Thank you,
dbuchanan 4 1568
I would turn on profiler until you get a hit on the query that breaks. You
can then see the parameters sent. I do not, at my cursory glance, see
anything that points to a reason for failure.
--
Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA
***************************
Think Outside the Box!
***************************
"dbuchanan" wrote: Hello,
I have an audit table into which I insert information about the use of the application. This works sometimes and other times fails. I cannot find any reason for it failing. It is always given the information.
Here are the errors I receive;
--------------------------- Exception Message: Procedure or function usp_UseAudit_ins has too many arguments specified. ---------------------------
--------------------------- Exception Source: .Net SqlClient Data Provider ---------------------------
--------------------------- Exception StackTrace: at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping) at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable) at CLIP.UseageAudit.InsertAuditRecord(String selection, String version) ---------------------------
The call to the method \\ InsertAuditRecord("ManageJobs", _version) //
The Method \\ Friend Sub InsertAuditRecord(ByVal selection As String, ByVal version As String)
Call DAL.InsertUseAudit()
Dim row As DataRow = _dataSet1.Tables("tblUseAudit").NewRow
row("pkUseAuditId") = Guid.NewGuid.ToString row("ClipUser") = SystemInformation.UserName.ToString row("version") = version row("DateTime") = Now row("Selection") = selection
_dataSet1.Tables("tblUseAudit").Rows.Add(row)
Dim dsDataChanges As New CLIP.dsTables dsDataChanges = CType(_dataSet1.GetChanges, CLIP.dsTables) If (Not (dsDataChanges) Is Nothing) Then
DAL.daUseAudit.Update(dsDataChanges, "tblUseAudit")
_dataSet1.Merge(dsDataChanges) _dataSet1.AcceptChanges() //
The DataAccess (DAL) \\ Public Sub InsertUseAudit()
With cmdUseAudit_Ins .CommandType = CommandType.StoredProcedure .CommandText = "usp_UseAudit_ins" .Connection = sqlConn With cmdUseAudit_Ins.Parameters
' No return required - Does not work even with this incuded '.Add(New SqlParameter("@RETURN_VALUE", SqlDbType.Int, '4, ParameterDirection.ReturnValue, False, CType(0, Byte), 'CType(0, Byte), "", DataRowVersion.Current, Nothing))
.Add(New SqlParameter("@pkUseAuditId", SqlDbType.VarChar, 36, "pkUseAuditId")) .Add(New SqlParameter("@ClipUser", SqlDbType.VarChar, 50, "ClipUser")) .Add(New SqlParameter("@version", SqlDbType.VarChar, 50, "version")) .Add(New SqlParameter("@DateTime", SqlDbType.SmallDateTime, 4, "DateTime")) .Add(New SqlParameter("@Selection", SqlDbType.VarChar, 50, "Selection")) End With End With End Sub //
Parts of the DataSet \\ Friend tblUseAudit As New DataTable
Me.tblUseAudit = Me.Tables.Add("tblUseAudit")
' tblUseAudit Dim pkUseAuditId As DataColumn = Me.tblUseAudit.Columns.Add("pkUseAuditId", GetType(String)) pkUseAuditId.MaxLength = 36 pkUseAuditId.AllowDBNull = False Dim ClipUser As DataColumn = Me.tblUseAudit.Columns.Add("ClipUser", GetType(String)) ClipUser.MaxLength = 50 ClipUser.AllowDBNull = False Dim version As DataColumn = Me.tblUseAudit.Columns.Add("version", GetType(String)) version.MaxLength = 50 version.AllowDBNull = False Dim DateTime As DataColumn = Me.tblUseAudit.Columns.Add("DateTime", GetType(DateTime)) DateTime.AllowDBNull = False Dim Selection As DataColumn = Me.tblUseAudit.Columns.Add("Selection", GetType(String)) Selection.MaxLength = 50 Selection.AllowDBNull = False
pkUseAuditId.ReadOnly = True
tblUseAudit.PrimaryKey = New DataColumn() {tblUseAudit.Columns("pkUseAuditId")}
The Table \\ CREATE TABLE [tblUseAudit] ( [pkUseAuditId] [varchar] (36) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ClipUser] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [version] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [DateTime] [smalldatetime] NOT NULL , [Selection] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO //
The Stored Procedure \\ CREATE PROCEDURE dbo.usp_UseAudit_ins( @pkUseAuditId varchar(36), @ClipUser varchar(50), @version varchar(50), @DateTime smalldatetime, @Selection varchar(50) ) AS SET NOCOUNT OFF; INSERT INTO tblUseAudit( pkUseAuditId, ClipUser, version, DateTime, Selection ) VALUES ( @pkUseAuditId, @ClipUser, @version, @DateTime, @Selection )
/** no return required - doesn't work even with this included. ; SELECT pkUseAuditId, ClipUser, version, DateTime, Selection FROM tblUseAudit WHERE (pkUseAuditId = @pkUseAuditId) **/
GO //
What could cause this error?
Thank you, dbuchanan
Hello Gregory,
Thank you for your reply
This is a trace of when it works;
\\
exec usp_UseAudit_ins
@pkUseAuditId = '929bc078-f8c9-4ac9-ace8-930f4a5661e9',
@ClipUser = 'dbuchanan',
@version = '1.1.4.16949',
@DateTime = 'Oct 26 2005 11:27AM',
@Selection = 'ManageJobs'
//
This is a trace of when it does not work;
\\
exec usp_UseAudit_ins
@pkUseAuditId = '47975d17-a234-45d2-a3a3-c78ed87e42ca',
@ClipUser = 'dbuchanan',
@version = '1.1.4.16949',
@DateTime = 'Oct 26 2005 11:27AM',
@Selection = 'Close',
@pkUseAuditId = '47975d17-a234-45d2-a3a3-c78ed87e42ca',
@ClipUser = 'dbuchanan',
@version = '1.1.4.16949',
@DateTime = 'Oct 26 2005 11:27AM',
@Selection = 'Close'
//
It executes the stored procedure with the row items inserted twice!
What's up?
I stepped through the code in debug and nothing ran twice. It's a
mystery to me! It runs differently with the same code!
Where do I go from here?
dbuchanan
Comments/Questions inline:
dbuchanan wrote: //
The DataAccess (DAL) \\ Public Sub InsertUseAudit()
With cmdUseAudit_Ins
where is cmdUseAudio_Ins defined?
.CommandType = CommandType.StoredProcedure .CommandText = "usp_UseAudit_ins" .Connection = sqlConn With cmdUseAudit_Ins.Parameters
' No return required - Does not work even with this incuded '.Add(New SqlParameter("@RETURN_VALUE", SqlDbType.Int, '4, ParameterDirection.ReturnValue, False, CType(0, Byte), 'CType(0, Byte), "", DataRowVersion.Current, Nothing))
.Add(New SqlParameter("@pkUseAuditId", SqlDbType.VarChar, 36, "pkUseAuditId")) .Add(New SqlParameter("@ClipUser", SqlDbType.VarChar, 50, "ClipUser")) .Add(New SqlParameter("@version", SqlDbType.VarChar, 50, "version")) .Add(New SqlParameter("@DateTime", SqlDbType.SmallDateTime, 4, "DateTime")) .Add(New SqlParameter("@Selection", SqlDbType.VarChar, 50, "Selection")) End With End With End Sub
'It seems that every time you call InsertUseAudit you add 'new'
parameters to the parameters collection. Perhaps you are adding
duplicate parameters when you call this method the second time? You
might try calling the .clear method of the parameters collection before
adding 'new' parameters.
//
Parts of the DataSet \\ Friend tblUseAudit As New DataTable
It appears you are creating a NEW datatable here... Me.tblUseAudit = Me.Tables.Add("tblUseAudit")
....but then throwing it away and assigning the table from the Tables
collection. Are these two variables the same?
Chris,
Thank you very much. I needed to add a .Clear() to the parameters
dbuchanan This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Marcus |
last post by:
We all know that the "gets" function from the Standard C Library (which
is part of the Standard C++ Library) is dangerous. It provides no
bounds check, so it's easy to overwrite memory when using...
|
by: Laura |
last post by:
I've just installed the DB2 Run-time client in a Solaris machine. Then
I finnish the installation configuring the connection:
1. machine catalog was OK:
==========================
$ db2 catalog...
|
by: iam247 |
last post by:
Hi
I have a web page which receives information from a form (using
request.form) and also attempts to look at an Access query to read in
recoeds to a variable named rsGroup.
When I have the...
|
by: MLH |
last post by:
Private Sub ButtonP_Click()
On Error GoTo Err_ButtonP_Click
Dim ThisForm As String
ThisForm = Me.Name
Exit_ButtonP_Click:
Exit Sub
Err_ButtonP_Click:
Dim r As String, k As String, Message3...
|
by: GHS |
last post by:
I'm writing code to parse a specific website and decided to use MSHTML to
help (instead of regular expressions). The parsing code is complete - looks
very nice if I say so myself. :-)
The...
|
by: Java Guy |
last post by:
I'm trying to view a web page. IE tells me there are (Java?) errors
on the page. Here they are:
Line: 15
Char: 7
Error: Wrong number of arguments or invalid propert assignment
Code: 0
URL:...
|
by: JamesG |
last post by:
Hi,
I'm new to C-Sharp (as of today) and i'm struggling to implement a
SOAP client to a PHP5 web service. I have added the Web Reference (do
I also need to use wsdl.exe and compile the .dll, and...
|
by: jmvidalvia |
last post by:
Hi everybody!
My first post here...hope to learn quickly.
I just mounted a debian server and start to run some few scripts. They "seem" to run, but sometimes (5% of times) I am getting this error...
|
by: DrVitoti |
last post by:
On that program the compiler says "parse error" on line 8, 10, 12 and 21, it also says "too many arguments" on lines 10, 12 and finally it says "at this port in" on lines 13, 14, 20 . How could I...
|
by: ryjfgjl |
last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
| |