powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / динамически построить datastore на базе процедуры, где один из аргументов datetime or date
10 сообщений из 10, страница 1 из 1
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
    #38401946
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
доброго всем времени суток.

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

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

со стрингами (: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
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
    #38402083
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может хоть СУБД напишешь? А то способности к телепатии к вечеру ни к черту:)
Но могу посоветовать, воспользуйся конвертацией строки, можно внутри процедуры.
...
Рейтинг: 0 / 0
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
    #38402158
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
    #38404308
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда попробовать дату указывать как
"@date_var ='2013-01-01'" или "@date_var =convert(date,'01.01.2013',104)"
...
Рейтинг: 0 / 0
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
    #38405072
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не могу понять в чём дело.

если я классически создаю 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
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
    #38405264
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это должно конвертиться из varchar
Нет одинарных кавычек, нет времени в дате, стоит непонятный "~"
Или что-то не то при создании, или менять именно это выражение, но вообще при создании dw из процедуры в MS SQL пытается подставиться те переменные, которые заданы в процедуре по умолчанию.
...
Рейтинг: 0 / 0
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
    #38405328
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо дружище.

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

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


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