Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.13;
Скачать: CL | DM;

Вниз

Что за ошибка?   Найти похожие ветки 

 
Explorer   (2002-04-17 08:23) [0]

Мастера!

При работе приложения с БД (вставка данных) появлется ошибка:

[Microsoft][ODBC Sql Server Driver] Invalid character value for cast specification

Вроде-бы всё проверил: и типы данных, и на "пустоту" полей.
В чем проблема?


 
Explorer   (2002-04-17 09:27) [1]

Что с такой проблемой ни кто не сталкивался?




 
Johnmen   (2002-04-17 09:33) [2]

Конкретнее...Как вставляешь, где ошибка....


 
wicked   (2002-04-17 09:34) [3]

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


 
Explorer   (2002-04-17 10:02) [4]

Вставляю через StoredProc используя процедуру в MS SQL.
Скажите, что вообще означает эта ошибка.



 
wicked   (2002-04-17 10:04) [5]

означает, что где-то типы не играют...
придётся тебе всё-таки показать текст твоей процедуры... :)


 
Explorer   (2002-04-17 10:07) [6]

Вот так происходит вставка:

{StoredProcWritePayments.Active:=false;
StoredProcWritePayments.ParamByName("@id_dogovor").AsInteger:=IdOfDog;
StoredProcWritePayments.ParamByName("@Summa").AsCurrency:=Summa701;
StoredProcWritePayments.ParamByName("@SummaDop1").AsCurrency:=Summa701;
StoredProcWritePayments.ParamByName("@SummaDop2_ndsfor613").AsCurrency:=0;
StoredProcWritePayments.ParamByName("@Kol_voDays").AsInteger:=Days701;
StoredProcWritePayments.ParamByName("@DateOfPaymentOrOper").AsDateTime:=date();
StoredProcWritePayments.ParamByName("@BeginOfPeriod").AsDateTime:=Date701Begin.Date;
StoredProcWritePayments.ParamByName("@EndOfPeriod").AsDateTime:=Date701End.Date;
StoredProcWritePayments.ParamByName("@account_dt").AsInteger:=500;
StoredProcWritePayments.ParamByName("@account_kr").AsInteger:=200;

StoredProcWritePayments.ParamByName("@NaimenovOfPay").AsString:=
DateToStr(Date701Begin.Date);

StoredProcWritePayments.ParamByName("@Tariff").AsCurrency:=
DatasModule.QueryDogovor.FieldByName("CostPerDayDogovor").AsCurrency;
StoredProcWritePayments.ParamByName("@StavkaNDS").AsFloat:=
DatasModule.QueryDogovor.FieldByName("NDSDogovor").AsFloat;
StoredProcWritePayments.ParamByName("@


 
Explorer   (2002-04-17 10:09) [7]

А вот процедура:


CREATE PROCEDURE dbo.PROCAddPayment @id_dogovor int, @Summa money, @SummaDop1 money, @SummaDop2_ndsfor613 money,
@Kol_voDays int, @DateOfPaymentOrOper smalldatetime,
@BeginOfPeriod smalldatetime, @EndOfPeriod smalldatetime, @account_dt int, @account_kr int, @NaimenovOfPay varchar(100), @Tariff money,
@StavkaNDS decimal, @ConditionOfPay smallint, @ERR int OUTPUT
AS

BEGIN tran AddPayment

if(@account_kr=200 /*accounts.id_account, accounts.balance=701*/)
begin
insert into Payments (id_dogovor, Summa, SummaDop1, SummaDop2_ndsfor613, Kol_voDays, DateOfPaymentOrOper,
BeginOfPeriod, EndOfPeriod, account_dt, account_kr, NaimenovOfPay, Tariff,
StavkaNDS, ConditionOfPay)

values(@id_dogovor, @Summa, @SummaDop1, @SummaDop2_ndsfor613, @Kol_voDays, @DateOfPaymentOrOper,
@BeginOfPeriod, @EndOfPeriod, @account_dt, @account_kr, @NaimenovOfPay, @Tariff,
@StavkaNDS, @ConditionOfPay)
end


if(@@error!=0) begin
rollback tran AddPayment
select @ERR=1
end
else begin
select @ERR=0
commit tran AddPayment
end
GO


 
wicked   (2002-04-17 10:17) [8]

хм... а структура таблицы Payments?...


 
Johnmen   (2002-04-17 10:23) [9]

Обрати внимание на следиющую запись :
...
StoredProcWritePayments.ParamByName("@


 
Explorer   (2002-04-17 10:23) [10]

Таблица:

id_provodka int 4
id_dogovor int 4
Summa money 8
SummaDop1 money 8
SummaDop2_ndsfor613 money 8
Kol_voDays int 4
DateOfPaymentOrOper smalldatetime 4
BeginOfPeriod smalldatetime 4
EndOfPeriod smalldatetime 4
account_dt int 4
account_kr int 4
NaimenovOfPay varchar 100
Tariff money 8
StavkaNDS decimal 9
ConditionOfPay smallint 2
DateCreate datetime 8 (текущая дата)


 
Donal_Graeme   (2002-04-17 10:27) [11]

типы параметров у StoredProc на форме выставил?


 
Explorer   (2002-04-17 10:27) [12]

>Johnmen

на что именно: имя параметра @


 
Explorer   (2002-04-17 10:31) [13]

>Donal_Graeme

Выставил. Вопрос: типы должны в точности (то есть по названию)
совпадать с описанными в процедуре?


 
Johnmen   (2002-04-17 10:31) [14]

Хотелось бы уточнить - там "C" это рус. или лат. ?


 
Explorer   (2002-04-17 10:33) [15]

>Donal_Graeme

Выставил. Вопрос: типы должны в точности (то есть по названию)
совпадать с описанными в процедуре?


 
Donal_Graeme   (2002-04-17 10:34) [16]

по возможности :-) иначе - наиболее близкое по смыслу.


 
Explorer   (2002-04-17 10:35) [17]

>Johnmen

Английская. То же уже проверял. Даже все скопировал из БД!


 
wicked   (2002-04-17 10:38) [18]

2 Explorer ©
слюшай, дарагой.... у меня всё работает... :)
а ты как параметр @err в adostoredproc обьявил то?... он же у тебя OUTPUT... например, в query analyzer"е это делается так:

declare @ee int
exec procaddpayment 10, 1, 2, 0, 3, "2002-04-17", "2002-04-15", "2002-04-19", 500, 200, "2002-04-17", 0.5, 0.2, 0, @ee output
print @ee
go
select * from payments

попробуй поиграй с этим, имхо собака порылась там....


 
wicked   (2002-04-17 10:40) [19]

ЗЫ забыл добавить - я наивно предположил, что id_provodka у тебя identity...
ЗЫЫ и еще - добавь после as в процедуру set nocount on


 
Explorer   (2002-04-17 10:43) [20]

Сейчас попробую


 
Donal_Graeme   (2002-04-17 17:13) [21]

и? :-)



Страницы: 1 вся ветка

Текущий архив: 2002.05.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
1-39727
BlackGrin
2002-04-27 15:02
2002.05.13
Программное задание переменных


3-39647
rvs
2002-04-17 11:33
2002.05.13
Query в Query


3-39675
SVM
2002-04-17 15:19
2002.05.13
Interbase


7-39878
KarlovAF
2001-12-21 16:26
2002.05.13
Сетевой принтер.


1-39720
aabark
2002-04-26 09:24
2002.05.13
Service pack for Delphi6 > 1