Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите со StoredProc [D5, MSSQL]


AleksandrKu ©   (2003-04-09 14:36:00) 

при вызове прицедуры выдает сообщение что неможет преобразовать тип 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


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

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


NAlexey   (2003-04-09 16:53:00) [2]

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


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

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


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

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

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

....

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

Что будет ?


NAlexey   (2003-04-09 15:45:00) [5]

Повторю:
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 все.


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

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


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

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

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


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

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


NAlexey   (2003-04-09 15:35:00) [9]

>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)
а если и так не проходит значит дело не здесь, а в том что ты в другие параметры грязь передаешь.


NAlexey   (2003-04-09 15:31:00) [10]

>вообщето хелр читал но насколько понял на столько так и написал
Погоди, у тебя написано:
@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 . А иначе в этом смысла нет.


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

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


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

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


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

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


NAlexey   (2003-04-09 15:21:00) [14]

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


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

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


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

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:07:00) [17]

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


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

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


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

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


stone   (2003-04-09 14:43:00) [20]

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)


Наверх

Титульная страница Поиск, карта сайта Написать письмо