Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / динамически построить datastore на базе процедуры, где один из аргументов datetime or date / 10 сообщений из 10, страница 1 из 1
19.09.2013, 17:59
    #38401946
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
доброго всем времени суток.

Ребята не подскажите как?

Не критично, просто самому хочетса узнать.

со стрингами (:roll:) и номерами понятно


s_sql_syntax = 'execute dbo.spu_test;1 @string_argument = a, @number_argument = 0'
s_presentation_str = "style(type=Tabular) Column(Font.Face='Microsoft Sans Serif' Font.Height= -8)"
s_dwsyntax_str = i_tr_sql.SyntaxFromSQL(s_sql_syntax, '', s_errors)

l_pos = Pos (s_dwsyntax_str, 'procedure=')

l_pos_end = Pos (s_dwsyntax_str, '"', l_pos + 11)

s_dwsyntax_str = Mid(s_dwsyntax_str, 1, l_pos -1) + 'procedure="1 execute dbo.spu_test;1 @string_argument = :string_argument, @user_skey = :number_argument" arguments=(("string_argument", string),("number_argument ", number)) '+ Mid(s_dwsyntax_str, l_pos_end + 1, 999999)

ds = create datastore

ds.Create(s_dwsyntax_str, s_errors)


а вот с @datetime_argument выдаёт ошибку. синтакс ... как правильно?

Буду премного благодерен.
...
Рейтинг: 0 / 0
19.09.2013, 20:10
    #38402083
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
Может хоть СУБД напишешь? А то способности к телепатии к вечеру ни к черту:)
Но могу посоветовать, воспользуйся конвертацией строки, можно внутри процедуры.
...
Рейтинг: 0 / 0
19.09.2013, 21:58
    #38402158
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
spas2001,

звиняйте.

pb 12.1 mssql 2008 ado.net

ну собственно я пока так делаю.
декларирую аргумент в процедуре как varchar() а потом конвертирую его в локальную переменную smalldatetime

типа:

create procedure sp_test
@date_str varchar(20)

as

set nocount on

declare @date smalldatetime


select @date = convert(smalldatetime, @date_str)

select * from table where entered_date = @date
...
Рейтинг: 0 / 0
23.09.2013, 08:29
    #38404308
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
Тогда попробовать дату указывать как
"@date_var ='2013-01-01'" или "@date_var =convert(date,'01.01.2013',104)"
...
Рейтинг: 0 / 0
23.09.2013, 18:35
    #38405072
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
не могу понять в чём дело.

если я классически создаю dw я имею:
procedure="1 execute dbo.spu_test;1 @bill_date_str = :bill_date_str, @user_skey = :user_skey" arguments=(("bill_date_str", datetime),("user_skey", number)) )




когда я создаю димамически, получаю:
procedure="1 execute dbo.spu_test;1 @bill_date_str = :bill_date_str, @user_skey = :user_skey" arguments=(("bill_date_str", datetime),("user_skey", number)) 2013-01-01~", @user_skey = 0")


/*********************************************************************/
s_sql_syntax = 'execute dbo.spu_test;1 @bill_date_str = "2013-01-01", @user_skey = 0'
s_presentation_str = "style(type=Tabular) Column(Font.Face='Microsoft Sans Serif' Font.Height= -8)"
s_dwsyntax_str = i_tr_sql.SyntaxFromSQL(s_sql_syntax, '', s_errors)

IF Len(s_errors) > 0 THEN
MessageBox(This.Title, 'SyntaxFromSQL Failed. Errors: ' + s_errors, Exclamation!)
This.TriggerEvent ('ue_close')
return
END IF
//Пока всё нормально, s_errors = ""

l_pos = Pos (s_dwsyntax_str, 'procedure=')
l_pos_end = Pos (s_dwsyntax_str, '"', l_pos + 11)
s_dwsyntax_str = Mid(s_dwsyntax_str, 1, l_pos -1) + 'procedure="1 execute dbo.spu_test;1 @bill_date_str = :bill_date_str, @user_skey = :user_skey" arguments=(("bill_date_str", datetime),("user_skey", number)) '+ Mid(s_dwsyntax_str, l_pos_end + 1, 999999)

ds = create datastore
ds.Create(s_dwsyntax_str, s_errors)

IF Len(s_errors) > 0 THEN
MessageBox(This.Title, 'SQLCreate Failed. Errors: ' + s_errors, Exclamation!)
This.TriggerEvent ('ue_close')
return
END IF

// здесь вылетает с ошибкой на: 2013-01-01~", @user_skey = 0"

что за шайтан?
почему и откуда добавляетса: 2013-01-01~", @user_skey = 0 ???
...
Рейтинг: 0 / 0
23.09.2013, 21:18
    #38405264
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
Это должно конвертиться из varchar
Нет одинарных кавычек, нет времени в дате, стоит непонятный "~"
Или что-то не то при создании, или менять именно это выражение, но вообще при создании dw из процедуры в MS SQL пытается подставиться те переменные, которые заданы в процедуре по умолчанию.
...
Рейтинг: 0 / 0
23.09.2013, 22:32
    #38405328
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
Спасибо дружище.

Вот так: s_sql_syntax = "execute dbo.spu_test;1 @bill_date_str = '2013-01-01 00:00:01', @user_skey = 0" - всё работает.

:drink:
...
Рейтинг: 0 / 0
24.09.2013, 12:49
    #38405887
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
Надо запомнить:)
...
Рейтинг: 0 / 0
06.10.2013, 04:34
    #38417934
Ursego
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
Возможно, это пригодиццо.
...
Рейтинг: 0 / 0
07.10.2013, 15:18
    #38419009
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
То Ursego
Без обид, но речь совершенно о другом
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / динамически построить datastore на базе процедуры, где один из аргументов datetime or date / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]