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

Вниз

Помогите со StoredProc   Найти похожие ветки 

 
AleksandrKu   (2003-04-09 14:36) [0]

при вызове прицедуры выдает сообщение что неможет преобразовать тип varchar в int хотя преобразую Varchar в datetime
попробывал прописать значения напрямую все равно напомогает
что может быть и как с этим бороться?
текст процедуры
CREATE PROCEDURE Dbo.create_dog
@IdOper int,
@IdGD int,
@IdGB int,
@IdKontr int,
@IdTip int,
@Summa money,
@SummaP money,
@SummaR money,
@DataDog varchar(10),
@DateIsp varchar(10),
@DayToIsp int,
@DateOf varchar(10),
@NumDog varchar (50),
@Prim varchar(254)
as
declare
@ident int;

insert into dogov
(IdOper, IdGD, IdGB, IdKontr, IdTip, Summa, SummaP, SummaR, DataDog, DateIsp, DateOf, NumDog, Prim)
values (@IdOper, @IdGD, @IdGB, @IdKontr, @IdTip, @Summa, @SummaP, @SummaR, convert(datetime,"01.01.03" ,104), convert(Datetime,"01.02.03" ,104), convert(datetime,"01.03.03" ,104) , @NumDog, @Prim)
GO


 
stone ©   (2003-04-09 14:43) [1]

set dateformat dmy
insert into dogov (IdOper, IdGD, IdGB, IdKontr, IdTip, Summa, SummaP, SummaR, DataDog, DateIsp, DateOf, NumDog, Prim)
values (@IdOper, @IdGD, @IdGB, @IdKontr, @IdTip, @Summa, @SummaP, @SummaR, "01.01.03", "01.02.03", "01.03.03",@NumDog, @Prim)


 
AleksandrKu   (2003-04-09 14:47) [2]

Спасибочки надеюсь поможет сейчас попробую


 
AleksandrKu   (2003-04-09 15:02) [3]

Не некатит опять тоже самое выдает


 
Zz_   (2003-04-09 15:07) [4]

Параметры в ХП передаются не по имени, а по порядковому номеру.
Наверняка у тебя несоответсвие.
Покажи как создаешь параметры в Delphi


 
AleksandrKu   (2003-04-09 15:10) [5]

My.create_dog.Parameters.ParamByName("@DataDog").value:=DataDog.text;
My.create_dog.Parameters.ParamByName("@DateIsp").value:=dateIsp.text;
My.create_dog.Parameters.ParamByName("@NumDog").value:=NumDog.text;
My.create_dog.Parameters.ParamByName("@IdOper").value:=my.operac.fieldbyname("link_id").asinteger;
My.create_dog.Parameters.ParamByName("@IdGD").value:=my.GenDir.fieldbyname("link_id").asinteger;
My.create_dog.Parameters.ParamByName("@IdGB").value:=my.GlaBuh.fieldbyname("link_id").asinteger;
My.create_dog.Parameters.ParamByName("@IdKontr").value:=my.View_kontr.fieldbyname("link_id").asinteger;
My.create_dog.Parameters.ParamByName("@IdTip").value:=my.Tip_oper.fieldbyname("link_id").asinteger;
My.create_dog.Parameters.ParamByName("@Summa").value:=strtofloat(Summa.caption);
My.create_dog.Parameters.ParamByName("@SummaP").value:=strtofloat(SummaP.Caption);
My.create_dog.Parameters.ParamByName("@SummaR").value:=strtofloat(SummaR.Caption);

My.create_dog.Parameters.ParamByName("@DayToIsp").value:=strtoint(DayToIsp.caption);
My.create_dog.Parameters.ParamByName("@DateOf").value:=datetostr(now);
{param:="@Dohod";
Set_Param_Proc(my.Update_dog,param ,NumDog.Text);
param:="@FlSobs";
Set_Param_Proc(my.Update_dog,param ,NumDog.Text);}
{ My.create_dog.Parameters.ParamByName("@Prim").value:=prim.Text;}
try
my.Create_dog.ExecProc;
MessageDlg(vartostr(my.create_dog.Parameters.Parambyname("@Return_Value").value),mtError,[mbOk],0);
Edit_dogov.Close;
{ action:=caFree;}
except
MessageDlg("


 
Zz_   (2003-04-09 15:11) [6]

Не присваиваешь, а создаешь


 
NAlexey ©   (2003-04-09 15:21) [7]

А почему ты решил что это так? -
convert(datetime,"01.03.03" ,104)
Вот так:
select convert(datetime,Cast("01.03.03" as DateTime) ,104)


 
AleksandrKu   (2003-04-09 15:23) [8]

>NAlexey
вообщето хелр читал но насколько понял на столько так и написал


 
AleksandrKu   (2003-04-09 15:24) [9]

>Zz_
Насколько я знаю := - оператор присваивания а создается (добавляется)параметр командой Add


 
AleksandrKu   (2003-04-09 15:28) [10]

Не
select convert(datetime,Cast("01.03.03" as DateTime) ,104)
то же самое некатит


 
NAlexey ©   (2003-04-09 15:31) [11]

>вообщето хелр читал но насколько понял на столько так и написал
Погоди, у тебя написано:
@DateIsp varchar(10), - поле varchar. Так?
ты пытаешься записать-
convert(datetime, "01.03.03" ,104)
так вот выделенная часть у тебя и так varchar. А конверт у тебя написан так, чтобы преобразовывать DateTime в varchar. Если ты напишешь:
select convert(DateTime, GetDate(), 104). все нормально заработает. Вот и не понятно зачем тебе конвертить varchar в varchar ч.з дату. По видимому ты хочешь как то отформатить ее в соответсвии с кодом 104-German dd.mm.yy . А иначе в этом смысла нет.


 
NAlexey ©   (2003-04-09 15:35) [12]

>select convert(datetime,Cast("01.03.03" as DateTime) ,104)
>то же самое некатит
Не надо писать в своем запросе
select convert(datetime,Cast("01.03.03" as DateTime) ,104)надо подставить везде заместо
convert(datetime,"01.01.03" ,104) и других такихже вот так
(datetime,Cast("01.03.03" as DateTime) ,104)
а если и так не проходит значит дело не здесь, а в том что ты в другие параметры грязь передаешь.


 
AleksandrKu   (2003-04-09 15:36) [13]

нет немного нетак я дату передаю переменной @DateIsp varchar
а в поле БД DateIsp куда я записываю значение переменной типа DateTime!


 
Zz_   (2003-04-09 15:38) [14]

Давай по порядку.

В QA вызов ХП выполняется ?


 
AleksandrKu   (2003-04-09 15:44) [15]

Конечно причем либо только с полями DateTime либо с полями Int


 
NAlexey ©   (2003-04-09 15:45) [16]

Повторю:
select convert(datetime,Cast("01.03.03" as DateTime) ,104) -
эта строка преобразует "01.03.03" сначала в дату, а потом в varchar в соответсвии с форматом 104.
>нет немного нетак я дату передаю переменной @DateIsp varchar
>а в поле БД DateIsp куда я записываю значение переменной типа >DateTime!
А вот с этого надо было начинать, что тебе varchar надо преобразовывать в дату. Тогда просто так, безо всяких Convert -замени все Convert на Cast("01.03.03" as DateTime). И если у тебя поле в BD типа DateTime то строка пришедшая в виде "01.03.03"преобразуется в DateTime все.


 
Zz_   (2003-04-09 15:50) [17]

А попробуй руками задать параметры

ADOSP.Parameters.Clear;
ADOSP.Parameters.CreateParameter("@RETURNING_VALUE", ftInteger,pdReturnValue,4,0);
ADOSP.Parameters.CreateParameter("@I_ID", ftInteger,pdInput, 4,0);

....

в том же порядке, что и в ХП

Что будет ?


 
AleksandrKu   (2003-04-09 16:34) [18]

о вроде получилось через cast и переставил в программе параметры попорядку как в ХП но..
у меня в базе дата храниться в формате храниться дд.мм.гггг передаю в этомже формате а cast переворачивает в формат мм.дд.гггг как можно установить формат даты?
если в начале процедуры поставлю set dateformat dmy поможет


 
NAlexey ©   (2003-04-09 16:53) [19]

Меню Start->Programs->Microsoft SQL Server->Client Network Utility->DBLibraryOptions
Галки AutomaticAnsiTOOEM Convertion и UseInternationalSetting должны стоять, проверь.


 
AleksandrKu   (2003-04-09 16:55) [20]

не Set DateFormat dmy помогло



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

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

Наверх




Память: 0.51 MB
Время: 0.021 c
1-91336
sergio
2003-04-15 17:18
2003.04.28
общие вопросы


14-91461
Почтальён Печкин
2003-04-09 13:09
2003.04.28
Письмо счастья


3-91185
sergun
2003-04-09 22:10
2003.04.28
Вопрос по полям


14-91488
Aleksey Pavlov
2003-04-10 13:52
2003.04.28
Чудеса с реестром, которых по идее не бывает :)


9-91135
drhdh
2002-11-17 18:05
2003.04.28
RPG