|
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
|
|||
---|---|---|---|
#18+
доброго всем времени суток. Ребята не подскажите как? Не критично, просто самому хочетса узнать. со стрингами (: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 выдаёт ошибку. синтакс ... как правильно? Буду премного благодерен. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 17:59 |
|
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
|
|||
---|---|---|---|
#18+
Может хоть СУБД напишешь? А то способности к телепатии к вечеру ни к черту:) Но могу посоветовать, воспользуйся конвертацией строки, можно внутри процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 20:10 |
|
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2013, 21:58 |
|
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
|
|||
---|---|---|---|
#18+
Тогда попробовать дату указывать как "@date_var ='2013-01-01'" или "@date_var =convert(date,'01.01.2013',104)" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2013, 08:29 |
|
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
|
|||
---|---|---|---|
#18+
не могу понять в чём дело. если я классически создаю 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 ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2013, 18:35 |
|
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
|
|||
---|---|---|---|
#18+
Это должно конвертиться из varchar Нет одинарных кавычек, нет времени в дате, стоит непонятный "~" Или что-то не то при создании, или менять именно это выражение, но вообще при создании dw из процедуры в MS SQL пытается подставиться те переменные, которые заданы в процедуре по умолчанию. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2013, 21:18 |
|
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
|
|||
---|---|---|---|
#18+
Спасибо дружище. Вот так: s_sql_syntax = "execute dbo.spu_test;1 @bill_date_str = '2013-01-01 00:00:01', @user_skey = 0" - всё работает. :drink: ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2013, 22:32 |
|
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
|
|||
---|---|---|---|
#18+
Надо запомнить:) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2013, 12:49 |
|
динамически построить datastore на базе процедуры, где один из аргументов datetime or date
|
|||
---|---|---|---|
#18+
Возможно, это пригодиццо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2013, 04:34 |
|
|
start [/forum/topic.php?fid=15&msg=38402158&tid=1335385]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 144ms |
0 / 0 |