Error converting data type nvarchar to int перевод

Hi All !!
  • Remove From My Forums
  • Question

  • Hi All !!

    When i Perform the Update Operation i’m getting Error Converting DataType nvarchar to int. I’l post the Codes wch i used ::

    First Part is SQL Queries ::
    CREATE TABLE Patient_Info
    (
    
    ID UNIQUEIDENTIFIER,
    NAME VARCHAR(30),
    AGE INT NOT NULL, 
    SEX VARCHAR(30),
    PROBLEM VARCHAR(255),
    PHONE INT NOT NULL,
    ADDRESS VARCHAR(30),
    COMMENTS VARCHAR(255),
    )
    
    /* INSERT STORED PROCEDURE */
    CREATE PROCEDURE INSERTDATA
    (
    @ID UNIQUEIDENTIFIER,
    @NAME VARCHAR(30),
    @AGE INT,
    @SEX VARCHAR(30),
    @PROBLEM VARCHAR(255),
    @PHONE INT,
    @ADDRESS VARCHAR(30),
    @COMMENTS VARCHAR(30)
    )
    AS 
    INSERT INTO [Patient_Info] ([ID],[NAME],[AGE],[SEX],[PROBLEM],[PHONE],[ADDRESS],[COMMENTS]) 
    Values
    (@ID,@NAME,@AGE,@SEX,@PROBLEM,@PHONE,@ADDRESS,@COMMENTS)
    
    /* UPDATE STORED PROCEDURE */
    CREATE PROCEDURE UPDATEDATA
    (
    
    @ID UNIQUEIDENTIFIER,
    @NAME VARCHAR(30),
    @AGE INT,
    @SEX VARCHAR(30),
    @PROBLEM VARCHAR(255),
    @PHONE INT,
    @ADDRESS VARCHAR(30),
    @COMMENTS VARCHAR(255)
    )
    AS 
    UPDATE [Patient_Info] 
    SET
    [NAME]=@NAME,
    [AGE]=@AGE,
    [SEX]=@SEX,
    [PROBLEM]=@PROBLEM,
    [PHONE]=@PHONE,
    [ADDRESS]=@ADDRESS,
    [COMMENTS]=@COMMENTS WHERE [ID]=@ID
    
    Second is Respective C# Code ::
    
     public int Insert(Patient_Class patient)
    
     {
     SqlConnection conn = new SqlConnection(connStr);
     conn.Open();
     SqlCommand cmd = new SqlCommand("INSERTDATA", conn);
     cmd.CommandType = CommandType.StoredProcedure;
    
     try
    
    
     {
     cmd.Parameters.AddWithValue("@ID", patient.Id);
     cmd.Parameters.AddWithValue("@NAME", patient.Name);
     cmd.Parameters.AddWithValue("@AGE", patient.Age);
     cmd.Parameters.AddWithValue("@SEX", patient.Sex);
     cmd.Parameters.AddWithValue("PROBLEM", patient.Problem);
     cmd.Parameters.AddWithValue("PHONE", patient.Phone);
     cmd.Parameters.AddWithValue("ADDRESS", patient.Address);
     cmd.Parameters.AddWithValue("COMMENTS", patient.Comments);
    
     return cmd.ExecuteNonQuery();
    
     }
    
    
    
    
     catch
    
     {
     throw;
    
     }
     finally
    
     {
     cmd.Dispose();
    
     conn.Close();
     conn.Dispose();
    
     }
    
    
     }
    
    
     public int Update(Patient_Class patient)
    
     {
    
    
     SqlConnection conn = new SqlConnection(connStr);
     conn.Open();
    
     SqlCommand cmd = new SqlCommand("UPDATEDATA", conn);
    
     cmd.CommandType = CommandType.StoredProcedure;
    
     try
     {
     cmd.Parameters.AddWithValue("@ID", patient.Id);
     cmd.Parameters.AddWithValue("@NAME", patient.Name);
     cmd.Parameters.AddWithValue("@AGE", patient.Age);
     cmd.Parameters.AddWithValue("@SEX", patient.Sex);
     cmd.Parameters.AddWithValue("PROBLEM", patient.Problem);
     cmd.Parameters.AddWithValue("PHONE", patient.Phone);
     cmd.Parameters.AddWithValue("ADDRESS", patient.Address);
     cmd.Parameters.AddWithValue("COMMENTS", patient.Comments);
    
     return cmd.ExecuteNonQuery();
    
     }
    
     catch
     {
     throw;
    
     }
    
     finally
    
     {
    
     cmd.Dispose();
     conn.Close();
     conn.Dispose();
    
     }
     This is the Code i wrote for "UPDATE" Button ::
    
    private void btn_Update_Click(object sender, EventArgs e)
    
      {
       int intResult = 0;
       dbAccess_Class dbClass = new dbAccess_Class();
    
       Patient_Class patient = new Patient_Class();
    
       patient.Id = lbl_ID.Text;
    
       patient.Name = text_NAME.Text;
    
       patient.Age = Int32.Parse(text_AGE.Text);
    
       patient.Sex = text_SEX.Text;
    
       patient.Problem = text_Prob.Text;
    
       patient.Phone = Int32.Parse(text_Phone.Text);
    
       patient.Address = text_ADDRESS.Text;
    
       patient.Comments = text_Comments.Text;
       try
    
       {
    
        intResult = dbClass.Update(patient);
    
        if (intResult > 0)
    
         MessageBox.Show("Updated in Database");
    
        dataGridView1.DataSource = ds.Tables[0];
     
    
       }
    
       catch (Exception ex)
    
       {
    
        MessageBox.Show(ex.Message.ToString());
    
       }
    
       finally
    
       {
    
        patient = null;
    
        dbClass = null;
    
       } 
    
    
    
      }
    
    
    Insertion is Performed Well, But during the Update Process, after updating some value, i click the "UPDATE" Button 
    
    that Time i'm getting the Error "ERROR CONVERTING DATATYPE NVARCHAR TO INT". Even in the UPDATE Button Function if i
    
    call the Insert function that time It's getting Inserting Again, I don't know Y for Update dis Type of error
    
    coming. Pls Help me to Solve this Problem, Thanks a Lot in Advance !!
    
    
    
    

    :) TAMILAN2233 (:

    • Edited by

      Thursday, February 17, 2011 4:14 PM

Answers

  • One thing…

    create «Phone» parameter as varchar — so you will be able to insert 0 as 1st character and spaces. Believe me — you will have less headackes (tested on my skin).

    Maybe this is causing the problems. Change the data type in database (to varchar, 50), and in all the code (remove int.Parse), and in sroredProcedure (PHONE VARCHAR (50))

    Hope this salves the issue.

    • Proposed as answer by
      Naomi N
      Thursday, February 17, 2011 10:38 PM
    • Marked as answer by
      tamilan2233
      Friday, February 18, 2011 3:53 AM

Содержание

  1. Ошибка SQL: Arithmetic overflow error converting numeric to data type numeric
  2. Специальные предложения
  3. См. также
  4. Реструктуризация базы в 1С: для чего требуется и о назначении в целом
  5. Копии баз данных и размер БД. Проблемы и пути решения
  6. Работа с файлом *.dt формата
  7. Регистрация в центре лицензирования не выполнена
  8. Настройка отказоустойчивого кластера 1C + PostgreSQL (etcd+patroni+haproxy) на Centos 8
  9. Workaround me в 1С/MS SQL и не только, системный подход к созданию костылей
  10. Ошибка Dump в 1С
  11. Режимы запуска системы 1С:Предприятие
  12. Оптимизация высоконагруженных конфигураций: история маленькой победы, или советы тем, кто столкнулся с проблемой впервые и не знает, что делать
  13. Ошибка формата потока расширения
  14. Пропадающие файлы на томе в 1С: КА 2.5
  15. Ошибка загрузки большого архива 1Cv8.dt в PostgresSQL на платформе 1С 8.3.19
  16. SAMBA для 1С
  17. Регламентное задание по завершению сеансов пользователей 1С
  18. Базовые приемы работы с кластером 1С при помощи БСП
  19. Error converting data type nvarchar to numeric перевод
  20. Answered by:
  21. Question
  22. Getting Error: «Error converting data type nvarchar to numeric» in SQL
  23. 4 Answers 4
  24. Error converting data type nvarchar to numeric перевод
  25. Answered by:
  26. Question
  27. Answers
  28. All replies

Ошибка SQL: Arithmetic overflow error converting numeric to data type numeric

По запросу «Arithmetic overflow error converting numeric to data type numeric» есть куча обсуждений и очень мало записано решений. Мой случай, вероятно, частный, но кого-то подтолкнет в направлении «куда копать».

SQL 2016 Standard
Платформа 8.3.18

При выполнении запросов к БД типа:

Когда, количество строк >

10 000 000, выдавалась ошибка:

Решение

Добавлено преобразование типа Число к конкретной длине. Баг перестал воспроизводиться.

Коллеги, если сталкивались с ошибкой, в комментариях опишите причину сбоя, и, если знают — другие способы устранения.

Специальные предложения

int до 2 147 483 647, не думаю, что такое кол-во записей в регистре.

Скорее всего, это игры 1С/MSSQL с precison numeric. Например, рассматривает 1 как Numeric(7,0), пытаясь к нему преобразовать результат СУММА(1).

P.S.
В конкретном примере использование «Сумма», по-моему, неоправдано, ибо Количество(*), скорее-всего выполнится верно.
( а если есть еще индекс по одному из измерений и делать COUNT(OUR_FIELD), то и full index scan не так страшен).

Советы по использованию «Выразить», наверное, относятся к случаю, когда вместо литерала суммируют что-то более осмысленное.

Лезть в профайлер и смотреть во что 1С превращает 1, неохота.

Для подсчета кол-ва записей лучше юзать:
Выбрать Количество(1) Из РегистрНакопления.ТоварыКПоступлению

ну а если нужна сумма, то можно применить такой костыль:
Выбрать Сумма(0.001) Из РегистрНакопления.ТоварыКПоступлению
получите сумму в тысячах )

(4) мысль автора комментария по-моему осталась не законченной.
Заметил и что?
Если решил, то как?
Если знаете решение — почему не поделиться с сообществом?
Кто знает о вашем достижении?

Если по существу — то вы молодец.

(6) наверное, мой навык гугления не такой как ваш.
Видел эту статью.
Там SQL древний описан и я не стал ее читать (зря).

Ничего страшного, если решение будет записано еще раз с указанием более свежей версии SQL.

Обновление 25.08.21 11:18

См. также

Реструктуризация базы в 1С: для чего требуется и о назначении в целом

В статье расскажем о том, как в 1С:Управление торговлей происходит реструктуризация таблиц информационной базы и почему это требуется производить регулярно.

07.12.2022 1106 Koder_Line 4

Копии баз данных и размер БД. Проблемы и пути решения

Столкнулся с проблемой быстрого роста объема БД. Статья о том, как решал эту проблему.

30.11.2022 1070 DrMih 5

Работа с файлом *.dt формата

В статье расскажем о том, что такое *.dt формат, для чего он применяется, как создать *.dt файл, куда и как загружать*.dt файл, а также дадим некоторые советы по работе с *.dt файлами.

29.11.2022 1367 Koder_Line 5

Регистрация в центре лицензирования не выполнена

Каждый пользователь программ 1С сталкивался с ситуацией, когда при входе в программу 1С появляется всплывающая картинка с информацией, что «Регистрация конфигурации в центре лицензирования не выполнена», которая появляется и мешает нам работать. При этом такая ситуация может возникнуть в любой конфигурации 1С.

28.09.2022 1423 Koder_Line 2

Настройка отказоустойчивого кластера 1C + PostgreSQL (etcd+patroni+haproxy) на Centos 8

Настройка отказоустойчивого кластера PostgreSQL для сервера приложений 1С на операционной системе Centos 8.

22.08.2022 2641 user1332168 10

Workaround me в 1С/MS SQL и не только, системный подход к созданию костылей

Workaround свидетельствует о невозможности решить проблему «правильным путем» и вызывает чувство стыда. Но практика показывает, что способность решать проблемы через workaround является порой единственным способом решить проблему в разумное время. А победителей, как говорят, не судят, так почему бы не создавать workaround по системе?

15.08.2022 1081 1CUnlimited 0

Ошибка Dump в 1С

В данной статье будет рассмотрено представление ошибки Dump в 1С, будет проведена её диагностика, а также определено, как устранить данную ошибку и продолжить дальнейшую корректную работу системы 1С. Также будет представлена общая информация об ошибке Memorydump, для более глубокого её понимания.

15.07.2022 1431 Koder_Line 3

Режимы запуска системы 1С:Предприятие

Существует несколько путей установки режимов запуска 1С:Предприятие. Рассмотрим запуски системы в режиме «1С:Предприятие» и в режиме Конфигуратора. Проговорим предварительно, что одновременное использование нескольких режимов не допускается для того, чтобы указать параметры командной строки.

12.07.2022 1813 Koder_Line 1

Оптимизация высоконагруженных конфигураций: история маленькой победы, или советы тем, кто столкнулся с проблемой впервые и не знает, что делать

Пост будет больше интересен руководителям отделов ИТ сопровождения или проектным менеджерам, перед которыми будет стоять задача решения проблемы деградации производительности баз данных 1С. Пост для тех, кому эта тема нова, нет особого опыта, и с ходу непонятно, с чего начать.

24.05.2022 3702 avolsed 15

Ошибка формата потока расширения

Восстановление базы данных 1С с ошибкой «Ошибка формата потока» с «полетевшим» расширением, когда все остальные методы уже испробованы.

19.05.2022 1244 yupi71 9

Пропадающие файлы на томе в 1С: КА 2.5

На протяжении месяца пропадали файлы: прикрепленные изображения, документы в ЭДО. КА 2.5, актуальная редакция на поддержке. Этого не описано НИГДЕ и если бы я нашел такую тему, у меня мы было гораздо меньше проблем.

05.04.2022 1177 mlashko 4

Ошибка загрузки большого архива 1Cv8.dt в PostgresSQL на платформе 1С 8.3.19

1С для платформы 8.3.19 ускорили загрузку dt-файлов за счет разбивки на несколько фоновых заданий. В итоге словили ошибку блокировки при загрузке в СУБД PostgresSQL большого 1cv8.dt-файла размером 25 Gb «ERROR: canceling statement due to lock timeout». Напишу, как в итоге загрузили этот dt-файл.

30.01.2022 8096 sapervodichka 51

SAMBA для 1С

Представлен необходимый минимум настройки SAMBA для работы файловых баз 1С через общий ресурс.

24.12.2021 4292 compil7 6

Регламентное задание по завершению сеансов пользователей 1С

Завершить работу пользователей в 1С ночью. Регламентное завершение работы.

06.12.2021 2449 Swamt 20

Базовые приемы работы с кластером 1С при помощи БСП

В данной публикации я рассматриваю базовые приемы работы с кластером серверных баз 1С, используя типовые типовые возможности библиотеки стандартных подсистем (БСП).

Источник

Error converting data type nvarchar to numeric перевод

This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.

Answered by:

Question

I am getting the same error when i execute the below code,

DECLARE @GrossClaimAmountEuro NVARCHAR(1000)
SELECT @GrossClaimAmountEuro = SUBSTRING(RTRIM(LTRIM(TempColumn)),0,LEN(RTRIM(LTRIM(TempColumn))) — LEN(‘Total Disputed Invoice Value’))
FROM fn_CCT_ConvertTextToRows(‘Customer Name : SPORT DANMARK A/S
Sold To # : 117799
Total Claim Value : 170,000.00
Total Disputed Invoice Value: 170,000.00
Total Claim Units : 13
Currency : EUR’)
WHERE RTRIM(LTRIM(TempColumn)) like ‘%Total Disputed Invoice Value%’
IF ISNUMERIC(@GrossClaimAmountEuro) = 0
SET @GrossClaimAmountEuro = ‘0’

SET @GrossClaimAmountEuro = REPLACE(@GrossClaimAmountEuro,’,’,»)
SELECT @GrossClaimAmountEuro
SELECT CONVERT(DECIMAL(15,4),LTRIM(RTRIM(‘170000.00 ‘)))
SELECT CONVERT(DECIMAL(15,4),LTRIM(RTRIM(@GrossClaimAmountEuro)))

The variable @GrossClaimAmountEuro holds holds a value ‘170000.00 ‘. When i hardcode the value and execute, the code works fine, if i give the variable name in the code, i am getting a error as,
«Msg 8114, Level 16, State 5, Line 18
Error converting data type nvarchar to numeric.»

I dont know.. what i am doing wrong..
Please help

Источник

Getting Error: «Error converting data type nvarchar to numeric» in SQL

I am passing 4 Parameters to an asp.net Webservice. This is my Code so far:

If i invoke that Webmethod with the 4 Parameters, the Method is working fine an i get a LIST of the RaumName’s and RaumID’s. But if i put only one Parameter iam getting an Error:

The ID’s in the Database are stored as Numeric and i passing string. I think that is the problem. But i dont know how to fix this.

I also want that my Query works also with only two or three entered Parameters.

Thank in advance!

4 Answers 4

Usually it’s not a problem to pass a string to a parameter that’s numeric, as long as the SQL Server is able to convert the content of the string to a numeric value itself. If that doesn’t work, you get this error.

For example: Passing «Hello» to a parameter that’s numeric, you get an error. Passing «1234» you don’t. Please note that an empty string or a string containing whitespace can not be converted to a numeric value!

However, it should be said that it is not good style to do that. You should make sure that the types you use in your application match the types in the database to avoid problems. Maybe some further detail on why you need to have string types in your application could help.

EDIT 1
To make a parameter optional for the query, the way to go would be the following:

  1. Change your SQL statement to allow optional parameters like WHERE RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID) .
  2. Do not add the @Raumklasse_ID parameter if it should be optional or add the value DBNull.Value

You should really consider changing your string properties to nullable types like int? .

EDIT 2
This is how your code could look implementing the changes I suggested in Edit 1:

Источник

Error converting data type nvarchar to numeric перевод

This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.

Answered by:

Question

I’m trying to convert a field of datatype varchar to numeric and its failing with the following error

Error converting data type varchar to numeric. Please see the sql am using and the sample data.Please need help!

Answers

Thanks Visakh16, from the link i created a function and executed the sql. Please see the below query and result set. Its showing validty 0 for ‘p’ and ‘NULL’. I can ask the users to correct the «P» record, but «NULL» are valid i cant filter them. What is the workaround for that?

Nope thats not true

NULL represents an unknown value so you wont be able to determine a data type for it

Hence validation functions like ISNUMERIC,ISDATE etc should always return false for it

So the function is working as per design

if you want to include them too you need to write condition as this

Please Mark This As Answer if it solved your issue
Please Mark This As Helpful if it helps to solve your issue
Visakh
—————————-
My MSDN Page
My Personal Blog
My Facebook Page

case when value NOT LIKE ‘%[^0-9]%’ THEN CAST ( value as numeric ( 6 , 2 )) ELSE NULL END

The values contain ‘.’ which is not 0-9. So no, it should not solve your problem, unless the values are not decimal.

There isn’t anything fundamentally wrong with what you did:

Both of these queries run just fine.

Can you provide the full DDL, DML and any attached objects (triggers et al)? There maybe some clues there.

Yup, it’s an invalid SQL SELECT statement. E.g. as a stand-alone example

This should run in your environment:

Thanks Patrick, below is the complete query

SV, scientific notation would cause this issue. For instance, ‘3.12332E10’ would succeed the test of the isnumeric function but would fail to convert. It happens almost everytime I import from excel.

Look for values containing ‘E’. If it is not your case then I would suggest doing a dichotonic search to figure out the failing value (split the result in half until you find the error).

To illustrate what I just said

Without example data from all of those objects, we won’t be able to test the full query for you. If you are sure the problem is on the original line you posted, we’d need to see any other objects associated with that column. Are there any triggers on the table?

Also, try aliasing your tables, to make referencing them quicker and easier (and improving the readability of your code). Aliasing works like this:

SV, I believe I had this issue with scientific notation. For instance, ‘3.12332E10’ would succeed the test of the isnumeric function but would fail to convert.

Look for values containing ‘E’. If it is not your case then I would suggest doing a dichotonic search to figure out the failing value (split the result in half until you find the error).

Actually, numbers even as large as 1234567890123456789012345678.00 convert to numeric from varchar, without an issue:

Since the original convert was only to 6, if any number larger than 999999.99 was encountered, it would have generated an overflow error.

Like you observed i have maany calculations in the sql. I zeroed on this particular «total_dollar_amount» calculation by commenting it out and re running the query and it worked fine. The problem is with this conversion only.There are no other objects that are associated with column and NO there are no triggers either.

No, negative values won’t cause a problem.

However, currency signs can. If you’re using SQL Server 2012 or newer, you can use TRY_CONVERT:

This should return all rows which cannot be converted.

SV, I believe I had this issue with scientific notation. For instance, ‘3.12332E10’ would succeed the test of the isnumeric function but would fail to convert.

Look for values containing ‘E’. If it is not your case then I would suggest doing a dichotonic search to figure out the failing value (split the result in half until you find the error).

Actually, numbers even as large as 1234567890123456789012345678.00 convert to numeric from varchar, without an issue:

Since the original convert was only to 6, if any number larger than 999999.99 was encountered, it would have generated an overflow error.

Источник

I have a stored procedure and I am getting this error when executing it from C# code.

Error converting data type nvarchar to int.

My stored procedure:

CREATE PROCEDURE [dbo].[donateBloodProc] 
  @donorName varchar(50),
  @gender varchar(20),
  @email varchar(50),
  @bloodGroup varchar(50),
  @contact_number int, @L_D_D date,
  @city varchar(50),
  @arid_number varchar(50),
  @DepId int 
  AS
  INSERT INTO
        tblDonors(Dname, gender, bloodGroup, email, contact_number,
        L_D_D,city,arid_number,DeptID,dateDonated) 
    VALUES 
       (@donorName,@gender,@bloodGroup,@email,@contact_number,
       @L_D_D,@city,@arid_number,@DepId,GETDATE());

And this is my C# code:

SqlCommand commandForSP = new SqlCommand("donateBloodProc",DALobj.openConnection());
commandForSP.CommandType = System.Data.CommandType.StoredProcedure;

commandForSP.Parameters.AddWithValue("@donorName", TextBox1.Text);
commandForSP.Parameters.AddWithValue("@gender", RadioButtonList1.SelectedValue);
commandForSP.Parameters.AddWithValue("@email", TextBox5.Text);
commandForSP.Parameters.AddWithValue("@bloodGroup", DropDownList1.SelectedValue);
commandForSP.Parameters.AddWithValue("@contact_number", TextBox2.Text);
commandForSP.Parameters.AddWithValue("@L_D_D", TextBox3.Text);
commandForSP.Parameters.AddWithValue("@city", DropDownList2.SelectedValue);
commandForSP.Parameters.AddWithValue("@arid_number", TextBox1.Text);
commandForSP.Parameters.AddWithValue("@DepId", TextBox4.Text);

commandForSP.ExecuteNonQuery();

All the data types of the columns in my stored procedure are same as in my database table tblDonors

#asp.net #sql

#asp.net #sql

Вопрос:

Ниже приведен мой код хранимой процедуры SQL. Пожалуйста, обратите внимание, что это торговый сайт. Когда я отправляю товары и предоставляю скидку на общую сумму (например, 2467-5% = 2345,65 — возвращаемое значение), а затем нажимаю перейти к оплате, я получаю эту ошибку : Error converting data type nvarchar to int .

 Line 211: int result = _com.ExecuteNonQuery(); 
 

Вот мой код:

 create proc [dbo].[usp_ins_and_update_other_cart_details]
    @Guestid varchar(max),
    @DisAmount int,
    @ShipAmount  int,
    @SubTotal int,
    @GrandAmount int
    as 
begin
    if not exists(select Guestid FROM DiscountAndShippingdetails WHERE Guestid =@Guestid)
    begin
        insert into DiscountAndShippingdetails 
              ( Guestid, DisAmount, ShipAmount, SubTotal, GrandAmount ) 
        values(@Guestid,@DisAmount,@ShipAmount,@SubTotal,@GrandAmount);
    end
    else
    begin
        update DiscountAndShippingdetails 
           set DisAmount   = @DisAmount
             , ShipAmount  = @ShipAmount
             , SubTotal    = @SubTotal
             , GrandAmount = @GrandAmount 
         where Guestid     = @Guestid;
    end
end
 

Комментарии:

1. Вам также придется опубликовать свой SQL-запрос.

2. Что это?. Вы должны показать свои усилия. Здесь мы не знаем, что вы назначили для nvarchar и int. Даже мы не знаем, с чего начать с вашего вопроса?

3. Проблема не здесь. Проблема заключается в вашем SQL-запросе. Включите данные varchar и nvarchar в одинарные кавычки.

4. является ли 2345,65 промежуточным итогом или общей суммой?. Если это так, то ваша процедура может быть неправильной. Вы должны изменить тип данных, иначе вам придется преобразовать свои значения в int, а затем попытаться вставить в базу данных.

5. ПОСЛЕ ПРЕДОСТАВЛЕНИЯ СКИДКИ 2345,65 — ЭТО БОЛЬШАЯ СУММА, Я ПЫТАЮСЬ ОКРУГЛИТЬ ЭТО ЗНАЧЕНИЕ, НАПРИМЕР, 2345,65 РАВНО 2346 ЕСТЬ ЛИ КАКОЙ-НИБУДЬ СПОСОБ ОКРУГЛИТЬ ЭТО ДЕСЯТИЧНОЕ ЗНАЧЕНИЕ, ПОЖАЛУЙСТА, ПОМОГИТЕ

Ответ №1:

Основная ошибка заключается только в одном: вы объявили тип данных как один, а отправляете свои данные как какой-то другой. Смотрите, вы объявили как int для всех столбцов, но отправляете значения в виде строки. Это основная причина вашей борьбы. Пожалуйста, следуйте приведенным ниже строкам для вашего следующего шага,

Измените свое объявление следующим образом,

 int subtotal = Convert.ToInt32( Math.Round(Convert.Todouble(lblsubtotal.Text)));
int discount = Convert.ToInt32(Math.Round(Convert.Todouble(lbldiscount.Text))); 
int shipping = Convert.ToInt32(Math.Round(Convert.Todouble(lblScharg.Text))); 
int gradtotal =Convert.ToInt32( Math.Round(Convert.Todouble(lblGrandTotal.Text))); 
int ret= insertOtherdetails(guiid, discount, shipping, subtotal, gradtotal); 
if (ret != 0) 
{ 
   Response.Redirect("~/Checkout.aspx");
} 
 

и измените определение вашей функции следующим образом: insertOtherdetails(string, int, int, int, int)

Комментарии:

1. промежуточный итог строки = lblsubtotal.Text. toString(); строка discount = lbldiscount.Text. toString(); доставка строки = lblScharg.Text. toString(); строка gradtotal = lblGrandTotal.Text. toString(); int ret= insertOtherdetails(guiid, скидка, доставка, промежуточный итог, gradtotal); if (ret != 0) { Ответ. Redirect(«~/Checkout.aspx»); } общий итог — это ярлык asp с именем gradtotal у нас есть четыре промежуточных итога, скидка , доставка, gradtotal

2. уважаемый, теперь я получаю это сообщение об ошибке компилятора: CS1502: наилучшее соответствие перегруженного метода для ‘Cart.insertOtherdetails (string, string, string, string, string, string)’ имеет некоторые недопустимые аргументы Источник ошибки: Строка 384: int shipping = Convert. ToInt32(lblScharg.Text); Строка 385: int gradtotal = Преобразовать. ToInt32(lblGrandTotal.Text); Строка 386: int ret = insertOtherdetails(идентификатор guiid, скидка, доставка, промежуточный итог, gradtotal); Строка 387: если (ret != 0) Строка 388: {

3. Также измените определение вашей функции. если вы обнаружите что-либо подобное в своей части кодирования insertOtherdetails(строка, строка, строка, строка, строка, строка), пожалуйста, измените следующим образом insertOtherdetails(int, int, int, int, int, int)

4. Наилучшее соответствие перегруженного метода для ‘Cart.insertOtherdetails(int, int, int, int, int, int, int)’ имеет некоторые недопустимые аргументы источник ошибки: Строка 386: int ret = insertOtherdetails(идентификатор guiid, скидка, доставка, промежуточный итог, gradtotal);

5. частная строка disCount(двойная ставка) { возврат (Двойной. Синтаксический анализ(lblsubtotal.Text. toString().Trim()) * (скорость / 100)). toString(); } вместо изменения общего итога есть ли какой-либо способ изменить это десятичное значение dicount, чтобы округлить его

Ответ №2:

прежде всего, вам нужно проверить, что ваша строка не является пустой или нулевой, а затем преобразовать ее в целое число.

Если вы хотите преобразовать nvarchar в целое число из c # asp.net используйте следующее:

преобразовать.toint32(yourstringvalue);

и если вы сделаете это из sql-запроса, выполните следующее:

ПРИВЕДЕНИЕ(yourvalue КАК INT)

=============== как вы изменили свой пост. Сначала проверьте, что ваша хранимая процедура возвращает int / string, а затем напишите

результат int = Преобразовать.ToInt32(executequery());

Комментарии:

1. пожалуйста, взгляните выше

2. вам нужно добавить один выходной параметр «@ClientID INT OUTPUT», а затем после операции вставки / обновления установить этот параметр: ВЫБЕРИТЕ @ClientID = SCOPE_IDENTITY()

3. я все еще не понимаю твою точку зрения, бриджеш, есть ли какой-нибудь способ принять или отказаться принимать десятичное значение

this is due to

SELECT     SUM(PayAmount)
FROM          TeacherPayment_Detail
WHERE      TeacherPaymentId IN ('20,21' )

but SQL Server Expects

 SELECT     SUM(PayAmount)
    FROM          TeacherPayment_Detail
    WHERE      TeacherPaymentId IN ('20','21' )

So you can do any one of the following

  1. write some function which will tokenise the ‘20,21’ to ’20’,’21’ in
    SQL (it is best to do a function which will returns a table)

    SELECT SUM(PayAmount)
    FROM TeacherPayment_Detail
    WHERE TeacherPaymentId IN (select val from Function_Split(TeacherPayment.Advance_IDs )

  2. Pass value in the form ‘val1′,’val2’

When it is only one value it will be ‘val’ and works, but when it is more than one value, it will ‘val1,val2’. so this wont works causing error. It will work if you pass like this ‘val1′,’val2’

** Function **

CREATE FUNCTION GetTokenizeValue
(
    @strCSVString VARCHAR(4000)
)
RETURNS 
@Result TABLE 
(
    -- Add the column definitions for the TABLE variable here
    ID int
)
AS
BEGIN


; WITH CTE(Start, [Stop]) AS
(
  SELECT  1, CHARINDEX(',' , @strCSVString )
  UNION ALL
  SELECT  [Stop] + 1, CHARINDEX(',' ,@strCSVString  , [Stop] + 1)
  FROM CTE
  WHERE [Stop] > 0
)
INSERT INTO @Result
SELECT  SUBSTRING(@strCSVString , Start, CASE WHEN stop > 0 THEN [Stop]-Start ELSE 4000 END) AS stringValue
FROM CTE

RETURN 
END

your select query will be

SELECT     SUM(PayAmount)
FROM          TeacherPayment_Detail
WHERE      TeacherPaymentId IN (select * from dbo.GetTokenizeValue(TeacherPayment.Advance_IDs))

this is due to

SELECT     SUM(PayAmount)
FROM          TeacherPayment_Detail
WHERE      TeacherPaymentId IN ('20,21' )

but SQL Server Expects

 SELECT     SUM(PayAmount)
    FROM          TeacherPayment_Detail
    WHERE      TeacherPaymentId IN ('20','21' )

So you can do any one of the following

  1. write some function which will tokenise the ‘20,21’ to ’20’,’21’ in
    SQL (it is best to do a function which will returns a table)

    SELECT SUM(PayAmount)
    FROM TeacherPayment_Detail
    WHERE TeacherPaymentId IN (select val from Function_Split(TeacherPayment.Advance_IDs )

  2. Pass value in the form ‘val1′,’val2’

When it is only one value it will be ‘val’ and works, but when it is more than one value, it will ‘val1,val2’. so this wont works causing error. It will work if you pass like this ‘val1′,’val2’

** Function **

CREATE FUNCTION GetTokenizeValue
(
    @strCSVString VARCHAR(4000)
)
RETURNS 
@Result TABLE 
(
    -- Add the column definitions for the TABLE variable here
    ID int
)
AS
BEGIN


; WITH CTE(Start, [Stop]) AS
(
  SELECT  1, CHARINDEX(',' , @strCSVString )
  UNION ALL
  SELECT  [Stop] + 1, CHARINDEX(',' ,@strCSVString  , [Stop] + 1)
  FROM CTE
  WHERE [Stop] > 0
)
INSERT INTO @Result
SELECT  SUBSTRING(@strCSVString , Start, CASE WHEN stop > 0 THEN [Stop]-Start ELSE 4000 END) AS stringValue
FROM CTE

RETURN 
END

your select query will be

SELECT     SUM(PayAmount)
FROM          TeacherPayment_Detail
WHERE      TeacherPaymentId IN (select * from dbo.GetTokenizeValue(TeacherPayment.Advance_IDs))

Понравилась статья? Поделить с друзьями:
  • Error control flow control
  • Error continuous value supplied to discrete scale
  • Error continue statement not within a loop
  • Error context php
  • Error content0 witcher 3