- 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
-
Edited by
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
-
Proposed as answer by
Содержание
- Ошибка SQL: Arithmetic overflow error converting numeric to data type numeric
- Специальные предложения
- См. также
- Реструктуризация базы в 1С: для чего требуется и о назначении в целом
- Копии баз данных и размер БД. Проблемы и пути решения
- Работа с файлом *.dt формата
- Регистрация в центре лицензирования не выполнена
- Настройка отказоустойчивого кластера 1C + PostgreSQL (etcd+patroni+haproxy) на Centos 8
- Workaround me в 1С/MS SQL и не только, системный подход к созданию костылей
- Ошибка Dump в 1С
- Режимы запуска системы 1С:Предприятие
- Оптимизация высоконагруженных конфигураций: история маленькой победы, или советы тем, кто столкнулся с проблемой впервые и не знает, что делать
- Ошибка формата потока расширения
- Пропадающие файлы на томе в 1С: КА 2.5
- Ошибка загрузки большого архива 1Cv8.dt в PostgresSQL на платформе 1С 8.3.19
- SAMBA для 1С
- Регламентное задание по завершению сеансов пользователей 1С
- Базовые приемы работы с кластером 1С при помощи БСП
- Error converting data type nvarchar to numeric перевод
- Answered by:
- Question
- Getting Error: «Error converting data type nvarchar to numeric» in SQL
- 4 Answers 4
- Error converting data type nvarchar to numeric перевод
- Answered by:
- Question
- Answers
- 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:
- Change your SQL statement to allow optional parameters like WHERE RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID) .
- 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
-
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 ) -
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
-
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 ) -
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))