Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

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

Posted on 2004-09-17
12
Medium Priority
?
2,157 Views
Last Modified: 2008-01-09
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
Comment
Question by:zachvaldez
  • 7
  • 2
  • 2
  • +1
12 Comments
 
LVL 8

Expert Comment

by:MartinCMS
ID: 12088545
Are you getting this error as the result of trying to Insert data into a table?
0
 
LVL 44

Expert Comment

by:bruintje
ID: 12088595
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
 
LVL 7

Assisted Solution

by:ChrisFretwell
ChrisFretwell earned 500 total points
ID: 12088805
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'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.

 

Author Comment

by:zachvaldez
ID: 12095607
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
 

Author Comment

by:zachvaldez
ID: 12105331
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
 
LVL 7

Accepted Solution

by:
ChrisFretwell earned 500 total points
ID: 12105368
what are the datatypes in your db for publisher, book, desc and cost and RowLastUpdtByOp?
0
 
LVL 44

Expert Comment

by:bruintje
ID: 12105382
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
 

Author Comment

by:zachvaldez
ID: 12105418
publisher -nvarchar
book -nvarchar
desc-ntext
cost-float
rowlatupdtbyop-char(20)
0
 

Author Comment

by:zachvaldez
ID: 12105624
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
 

Author Comment

by:zachvaldez
ID: 12106095
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
 

Author Comment

by:zachvaldez
ID: 12106485
I was able to get the publisher in but not the most important--ID!
0
 

Author Comment

by:zachvaldez
ID: 12108293
I fixed the problem in the ADO side.
Thanks with all your help!
0

Featured Post

Get your Conversational Ransomware Defense e‑book

This e-book gives you an insight into the ransomware threat and reviews the fundamentals of top-notch ransomware preparedness and recovery. To help you protect yourself and your organization. The initial infection may be inevitable, so the best protection is to be fully prepared.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Ever needed a SQL 2008 Database replicated/mirrored/log shipped on another server but you can't take the downtime inflicted by initial snapshot or disconnect while T-logs are restored or mirror applied? You can use SQL Server Initialize from Backup…
I have a large data set and a SSIS package. How can I load this file in multi threading?
Using examples as well as descriptions, and references to Books Online, show the documentation available for date manipulation functions and by using a select few of these functions, show how date based data can be manipulated with these functions.
Via a live example, show how to backup a database, simulate a failure backup the tail of the database transaction log and perform the restore.

886 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question