Форум: "Базы";
Текущий архив: 2002.05.13;
Скачать: [xml.tar.bz2];
ВнизЧто за ошибка? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c