• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2174
  • Last Modified:

-2147217913 [Microsoft][ODBC SQL Server Driver][SQL Server]Error converting data type char to int.

I am getting this error:

-2147217913 [Microsoft][ODBC SQL Server Driver][SQL Server]Error converting data type char to int.

Any idea how to fix it?
0
zachvaldez
Asked:
zachvaldez
  • 7
  • 2
  • 2
  • +1
2 Solutions
 
MartinCMSCommented:
Are you getting this error as the result of trying to Insert data into a table?
0
 
bruintjeCommented:
how to fix depends on what you're trying to do post a bit or statement when it happened and what you're trying to do
0
 
ChrisFretwellCommented:
If you're inserting data into a table it means that you are attempting to insert at least one item that has a non-numeric value into a column that is integer only

If you're selecting data with a where clause like WHERE field > 10 it means that the column field is not a numeric data type and at least one row in your table has a value in field that is not an integer

If you're trying to do math on a field that has character data you'll have the smae problem.

You can create the same type of problem in a case statement.

How to solve it, depends on where you problem comes from.

If its the insert, you have a choice of excluding non-numeric rows or changing your destination data type.
If its the where clause putting quotes around the comparision would help (provided your data supports the results) where field > '10'
If its math, you need to exclude non numeric rows
If its a case statement you need to rethink it
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
zachvaldezAuthor Commented:
I added another field and it got more worse. Let me do some work and following all your suggestions,I'll get back and report on my findings.
0
 
zachvaldezAuthor Commented:
I am passing this thru ADO.

 Set prmId = CmdEquipItems.CreateParameter("@ID", adInteger, adParamInput, 4, lblmodID.Caption)
    CmdEquipItems.Parameters.Append prmId

when it hits this line ,produces runtime errror 3421-Application uses value of the wrong type for the current operation.

I am not getting the error in the UPdate process, just when inserting a new record....




My stored procedure


CREATE PROCEDURE [spu_TestInsertUpdateCatalog]
      @publisher      varchar(40),
      @book      varchar(20),
      @description      varchar(8000) ,
      @cost            float,
      @list            float,      
                @id            int,
      @user_name      char(20),

AS
     SET NOCOUNT ON
 
     if exists(select ID  from books where id = @id)
 begin
             UPDATE Books
             SET   publisher = @publisher
                            book      = @book,
                         descrip = @description,
                         cost =@cost,
                         list =@list,
                         vendid = @vendid,
                        Changed = GetDate(),
                         RowLastUpdtByOp = @user_name,
               RowLastUpdtDtTi = GetDate()
                 
     WHERE
                id = @id
end
     ELSE
Begin        
                 
 INSERT INTO Books
                     (
                     publisher,
                     Book,
            descrip,
                     cost,
                     list,
                               Changed,
                        RowLastUpdtByOp,
                    CreatedDtTi      
                     )
          VALUES
                     (
                     @publisher
                     @book,
                     @description,
                     @cost,
                     @list,
             GetDate(),
                     @user_name,
                     GetDate()
                     )
End
GO
0
 
ChrisFretwellCommented:
what are the datatypes in your db for publisher, book, desc and cost and RowLastUpdtByOp?
0
 
bruintjeCommented:
the label caption that's passed in is an implicit conersion to string what happens when you convert it first?

Set prmId = CmdEquipItems.CreateParameter("@ID", adInteger, adParamInput, 4, CInt(lblmodID.Caption))
    CmdEquipItems.Parameters.Append prmId
0
 
zachvaldezAuthor Commented:
publisher -nvarchar
book -nvarchar
desc-ntext
cost-float
rowlatupdtbyop-char(20)
0
 
zachvaldezAuthor Commented:
I get 'OVERFLOW' using the Cint(lblmodID.caption) when doing the edit/updates.

If I leave as is lblmodID.caption- It's oK no error.
0
 
zachvaldezAuthor Commented:
I fixed it by changing the label to a textbox to read as

    Set prmId = CmdEquipItems.CreateParameter("@ID", adInteger, adParamInput, 4, txtID)
    CmdEquipItems.Parameters.Append prmId

This is OK now but the problem now is that it not writing/adding  the new ID and Publisher name in the Book table.
The rest of the data are entered/written to the Database though..
0
 
zachvaldezAuthor Commented:
I was able to get the publisher in but not the most important--ID!
0
 
zachvaldezAuthor Commented:
I fixed the problem in the ADO side.
Thanks with all your help!
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 7
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now