Гость
Форумы / [игнор отключен] [закрыт для гостей] / Как задать параметр даты в запросе? / 25 сообщений из 47, страница 1 из 2
19.08.2014, 14:09
    #38723480
gerthog
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
Есть не большой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT TABEL_INTERMEDIADATE.STAFF_ID, TABEL_INTERMEDIADATE.DATE_PASS, TABEL_INTERMEDIADATE.TIME_PASS, TABEL_INTERMEDIADATE.TYPE_PASS, TABEL_INTERMEDIADATE.CONFIG_TREE_ID, TABEL_INTERMEDIADATE.AREAS_TREE_ID
FROM TABEL_INTERMEDIADATE
WHERE 
   (
      (TABEL_INTERMEDIADATE.DATE_PASS >= ВотСюдаБыДатуМне
   )
ORDER BY TABEL_INTERMEDIADATE.DATE_PASS DESC


Что прописать вместо "ВотСюдаБыДатуМне"? Я пробовал так: CONVERT(DATETIME,'20140201000000',104) - не работает
Пробовал просто: '20140201000000' - тоже не вышло...
Что я делаю не так?
...
Рейтинг: 0 / 0
19.08.2014, 14:13
    #38723484
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
gerthog,

а в документацию не пробовал заглянуть?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
  TABEL_INTERMEDIADATE.STAFF_ID, 
  TABEL_INTERMEDIADATE.DATE_PASS, 
  TABEL_INTERMEDIADATE.TIME_PASS, 
  TABEL_INTERMEDIADATE.TYPE_PASS, 
  TABEL_INTERMEDIADATE.CONFIG_TREE_ID, 
  TABEL_INTERMEDIADATE.AREAS_TREE_ID
FROM TABEL_INTERMEDIADATE
WHERE TABEL_INTERMEDIADATE.DATE_PASS >= date '2014-02-01'
ORDER BY TABEL_INTERMEDIADATE.DATE_PASS DESC
...
Рейтинг: 0 / 0
19.08.2014, 14:18
    #38723490
gerthog
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
Симонов Денис, спасибо, работает! В документацию пробовал заглянуть но не нашел оной, на английском вроде бы что-то есть, на русском не нашел.
...
Рейтинг: 0 / 0
19.08.2014, 14:32
    #38723507
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
Так это не параметр, а тупо значение. Параметр пишется так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
   TABEL_INTERMEDIADATE.STAFF_ID,
   TABEL_INTERMEDIADATE.DATE_PASS,
   TABEL_INTERMEDIADATE.TIME_PASS,
   TABEL_INTERMEDIADATE.TYPE_PASS,
   TABEL_INTERMEDIADATE.CONFIG_TREE_ID,
   TABEL_INTERMEDIADATE.AREAS_TREE_ID
FROM TABEL_INTERMEDIADATE
WHERE TABEL_INTERMEDIADATE.DATE_PASS >= ?
ORDER BY TABEL_INTERMEDIADATE.DATE_PASS DESC


Или в разных обёртках так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
   TABEL_INTERMEDIADATE.STAFF_ID,
   TABEL_INTERMEDIADATE.DATE_PASS,
   TABEL_INTERMEDIADATE.TIME_PASS,
   TABEL_INTERMEDIADATE.TYPE_PASS,
   TABEL_INTERMEDIADATE.CONFIG_TREE_ID,
   TABEL_INTERMEDIADATE.AREAS_TREE_ID
FROM TABEL_INTERMEDIADATE
WHERE TABEL_INTERMEDIADATE.DATE_PASS >= :PARAM
ORDER BY TABEL_INTERMEDIADATE.DATE_PASS DESC


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.08.2014, 14:54
    #38723533
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
И даже так:

Param=?Param
...
Рейтинг: 0 / 0
19.08.2014, 15:14
    #38723564
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
gerthog,

'21.01'
'21.01.2001'
...
'21.01.2001 18:00:00'
...
Рейтинг: 0 / 0
19.08.2014, 15:35
    #38723588
gerthog
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
Понятно что это тупо значение, просто я не знаю как потом передать значение параметра.
Я из 1с пытаюсь подключится к базе FB выполнить запрос и обойти результат в самой 1с, есть у меня такой код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Конн = Новый COMОбъект("ADODB.Connection");
	  Конн.ConnectionString = "Driver=Firebird/InterBase(r) driver;" +
	     "Dbname=127.0.0.1/3050:C:\1cbase\PERCo\SCD17K.FDB;" +  
	     "UID=login;" +                                   
	     "PWD=pass;" +                               
	     "CHARSET=WIN1251;" +                           
	     "client=C:\Program Files\Firebird\Firebird_2_5\WOW64\fbclient.dll";
	  Конн.ConnectionTimeout = 180;
	  Конн.CursorLocation = 3;
	  // Подключаемся к базе данных
	  Try
	    Конн.Open(Конн.ConnectionString);
	  Except
	    Сообщить("Не удалось выполнить подключение " + ОписаниеОшибки());
	    Return;
	EndTry;
 
  // Выполнение селективного запроса
  RecordSet = Новый COMОбъект("ADODB.Recordset");
  RecordSet.ActiveConnection = Конн;
  RecordSet.CursorType = 1;
  RecordSet.LockType = 3;
  //Запрос к базе данных на языке SQL запросов
  Try
	
	RecordSet.Open("SELECT TABEL_INTERMEDIADATE.STAFF_ID, 
                              |TABEL_INTERMEDIADATE.DATE_PASS,               TABEL_INTERMEDIADATE.TIME_PASS,
                              |TABEL_INTERMEDIADATE.TYPE_PASS, TABEL_INTERMEDIADATE.CONFIG_TREE_ID, 
                              |TABEL_INTERMEDIADATE.AREAS_TREE_ID
			      |FROM TABEL_INTERMEDIADATE
			      |WHERE 
       			      |   (
			      |      (TABEL_INTERMEDIADATE.DATE_PASS >= date '2014-02-01')
			      |   )
			      |ORDER BY TABEL_INTERMEDIADATE.DATE_PASS DESC", Конн);   //список по дате
					
  Except  
    Сообщить("Не удалось выполнить запрос " + ОписаниеОшибки());
    Конн.Close();
    Return;
  EndTry;


Вот как передать параметр не знаю, поэтому приходиться делать через ж... :)
...
Рейтинг: 0 / 0
19.08.2014, 16:35
    #38723650
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
gerthog,

Так вот как, оказывается, выглядит код в 1С.

Пойду-ка попью кофе, передохну, успокоюсь...

Да, о чем это я. У твоего RecordSet-a есть свойства типа Params, ParamByName, ParamByIndex или что-то в этом роде?
...
Рейтинг: 0 / 0
19.08.2014, 16:53
    #38723666
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
miwaonlineУ твоего RecordSet-a есть свойства типа Params, ParamByName, ParamByIndex
или что-то в этом роде?
Достаточно посмотреть
справку ,
чтобы найти что всё это есть, но не у набора данных. Но аффтар, очевидно, неспособен...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.08.2014, 16:55
    #38723668
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
miwaonlineТак вот как, оказывается, выглядит код в 1С.а по моему очень мило, особенно понравилось вот это
gerthog
Код: vbnet
1.
+ ОписаниеОшибки


всё понятно и по русски.

miwaonlineУ твоего RecordSet-a есть свойства типаэто не его рекорсет - это ADO
...
Рейтинг: 0 / 0
19.08.2014, 17:11
    #38723679
gerthog
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
Dimitry Sibiryakov, открыл ссылку, почитал(английского почти не знаю). После прочтения первый же вопрос: "И чё? Мне то чё делать с этим в 1с???" Был бы хоть один пример, хотя бы самый простой
...
Рейтинг: 0 / 0
20.08.2014, 08:35
    #38724037
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
gerthog"И чё? Мне то чё делать с этим в 1с???"переделывать на использование коллекции, а не рекордсета.
gerthogБыл бы хоть один пример, хотя бы самый простойдержи.
правда здесь не коллекция и это не 1С.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
procedure TForm1.Button1Click(Sender: TObject);
begin
OraQuery1.Open;
with ADOCommand1 do
  begin
    OraQuery1.First;
    while not OraQuery1.Eof do
      begin
        Parameters.ParamByName('VID').Value := OraQuery1.FieldValues['VID'];
        Parameters.ParamByName('TIP_RES').Value := OraQuery1.FieldValues['TIP_RES'];
        Parameters.ParamByName('VLADELEC').Value := OraQuery1.FieldValues['VLADELEC'];
        Parameters.ParamByName('ADRES').Value := OraQuery1.FieldValues['ADRES'];
        Parameters.ParamByName('MESTO').Value := OraQuery1.FieldValues['MESTO'];
        Parameters.ParamByName('VD').Value := OraQuery1.FieldValues['VD'];
        Parameters.ParamByName('SS').Value := OraQuery1.FieldValues['SS'];
        Parameters.ParamByName('VD1').Value := OraQuery1.FieldValues['VD1'];
        Parameters.ParamByName('SS1').Value := OraQuery1.FieldValues['SS1'];
        Parameters.ParamByName('P').Value := OraQuery1.FieldValues['P'];
        Parameters.ParamByName('FI').Value := OraQuery1.FieldValues['FI'];
        Parameters.ParamByName('FP').Value := OraQuery1.FieldValues['FP'];
        Parameters.ParamByName('KLASS').Value := OraQuery1.FieldValues['KLASS'];
        Parameters.ParamByName('POZYVNOJ').Value := OraQuery1.FieldValues['POZYVNOJ'];
        Parameters.ParamByName('H').Value := OraQuery1.FieldValues['H'];
        Parameters.ParamByName('DATA').Value := OraQuery1.FieldValues['DATA'];
        Parameters.ParamByName('SROK').Value := OraQuery1.FieldValues['SROK'];
        Parameters.ParamByName('RAZRESCH').Value := OraQuery1.FieldValues['RAZRESCH'];
        Parameters.ParamByName('ZAVNOMER').Value := OraQuery1.FieldValues['ZAVNOMER'];
        Parameters.ParamByName('IND').Value := OraQuery1.FieldValues['IND'];
        Execute;
        OraQuery1.Next;
      end;
  end;
end;
...
Рейтинг: 0 / 0
20.08.2014, 09:42
    #38724085
gerthog
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
roadster, в приведенном примере неясно это передача параметров в запрос или присвоение значений параметрам?
Оператор ":=" это вроде бы присвоение, так?
...
Рейтинг: 0 / 0
20.08.2014, 09:52
    #38724093
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
gerthog, параметрам команды (процедуры) задаются значения из полей запроса в цикле.
...
Рейтинг: 0 / 0
20.08.2014, 10:26
    #38724128
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
roadstermiwaonlineТак вот как, оказывается, выглядит код в 1С.а по моему очень мило, особенно понравилось вот это
gerthog
Код: vbnet
1.
+ ОписаниеОшибки


всё понятно и по русски.

Мне больше вот это понравилось
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
          Конн.ConnectionString = "Driver=Firebird/InterBase(r) driver;"
....
	  Try
	    Конн.Open(Конн.ConnectionString);
	  Except
	    Сообщить("Не удалось выполнить подключение " + ОписаниеОшибки());
	    Return;
	EndTry;
Первый оператор английский, второй - кириллица, или объект/класс на кириллице, его своства - латиницей. Весело наверное люди живут.

roadstermiwaonlineУ твоего RecordSet-a есть свойства типаэто не его рекорсет - это ADO
Это ты типа к буковкам решил придраться? Ну хорошо, измени для себя на "у используемого тобой рекордсета".
...
Рейтинг: 0 / 0
20.08.2014, 10:31
    #38724130
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
miwaonlineПервый оператор английский, второй - кириллица, или объект/класс на кириллице, его своства - латиницей.
Это переменная. Какая разница на каком она языке?

Код: java
1.
FoldersAdapter адаптер = new FoldersAdapter(this);
...
Рейтинг: 0 / 0
20.08.2014, 10:34
    #38724131
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
wadmanmiwaonlineПервый оператор английский, второй - кириллица, или объект/класс на кириллице, его своства - латиницей.
Это переменная. Какая разница на каком она языке?

Код: java
1.
FoldersAdapter адаптер = new FoldersAdapter(this);


Принципиальная - либо регулярно переключаться между языками при кодировании, либо - нет. Я, например, даже комментарии на английском пишу чтобы не переключаться.
...
Рейтинг: 0 / 0
20.08.2014, 10:47
    #38724148
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
miwaonlinewadmanпропущено...

Это переменная. Какая разница на каком она языке?

Код: java
1.
FoldersAdapter адаптер = new FoldersAdapter(this);



Принципиальная - либо регулярно переключаться между языками при кодировании, либо - нет. Я, например, даже комментарии на английском пишу чтобы не переключаться.
То есть никакой, лишь личная неприязнь (лень). :)
...
Рейтинг: 0 / 0
20.08.2014, 10:47
    #38724149
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
miwaonline,

если пользователю надо ошибки на русском языке выводить или диалоги строить всё равно переключаться придётся.
...
Рейтинг: 0 / 0
20.08.2014, 11:32
    #38724231
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
miwaonlineЭто ты типа к буковкам решил придраться?это я просто обратил внимание, что ТС стоит почитать про ADO :)
...
Рейтинг: 0 / 0
20.08.2014, 11:42
    #38724250
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
gerthogв приведенном примере неясно это передача параметров в запрос или присвоение значений параметрам?в данном случае это не имеет значения.
но раз уж докапываться до таких мелочей, то это присвоение значений параметрам объекта ADOCommand1, затем производится вызов метода Execute для данного объекта.
если интересно, то в объекте ADOCommand1 есть свойство CommandText, содержащее следующий код
Код: sql
1.
2.
3.
4.
5.
6.
SET IDENTITY_INSERT Station ON;
insert into Station (VID, TIP_RES, VLADELEC, ADRES, MESTO, VD, SS, P, FI, FP, KLASS, POZYVNOJ, H, RAZRESCH, DATA, SROK, SV_REG, DATA_SV_R, SROK_SV_R, RAZR_FREQ, 
                         DATA_R_FR, SROK_R_FR, ZAVNOMER, CENTREDE, FUNC, AZIMUT, USILENIE, UROVEN, ANTENNA, POLARIZ, OTVETST, IND, VD1, SS1)
VALUES (:VID, :TIP_RES, :VLADELEC, :ADRES, :MESTO, :VD, :SS, :P, :FI, :FP, :KLASS, :POZYVNOJ, :H, :RAZRESCH, :DATA, :SROK, NULL, NULL, NULL, NULL,
                         NULL, NULL, :ZAVNOMER, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, :IND, :VD1, :SS1);
SET IDENTITY_INSERT Station OFF;


так же у объекта ADOCommand1 есть свойство Parameters, в котором и содержатся все параметры объекта.
ну вот присваивается значение параметрам объекта ADOCommand1 и при вызове метода Execute происходит передача присвоенных значение в качестве параметров в команду insert из свойства CommandText.
ну как-то так примерно...
...
Рейтинг: 0 / 0
20.08.2014, 11:59
    #38724278
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
А вот добавили бы в новое API всего один метод и можно было бы пользоваться им напрямую,
без прокладок типа ADO и ODBC...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.08.2014, 12:04
    #38724291
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
Dimitry SibiryakovА вот добавили бы в новое API всего один метод и можно было бы пользоваться им напрямую,
без прокладок типа ADO и ODBC...в стартовом посте про 1С речь, так что здесь ещё и в 1С надо смотреть как там чего понакурено реализовано.
...
Рейтинг: 0 / 0
20.08.2014, 12:32
    #38724340
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
Dimitry Sibiryakov,

теоретически да, но это только если API FB будет работать как COM имея при этом тормоза. Да и с преобразованием статусов в исключения вроде бы пока вопрос остаётся открытым
...
Рейтинг: 0 / 0
20.08.2014, 12:38
    #38724350
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать параметр даты в запросе?
wadmanmiwaonline
Принципиальная - либо регулярно переключаться между языками при кодировании, либо - нет. Я, например, даже комментарии на английском пишу чтобы не переключаться.
То есть никакой, лишь личная неприязнь (лень). :)
Варианты типа "найди десять отличий в переменных «а» и «a», или «aдаптеp» и «адаптер»" не рассматриваются по какой причине?

Симонов Денисmiwaonline,
если пользователю надо ошибки на русском языке выводить или диалоги строить всё равно переключаться придётся.
У меня весь софт мультиязычный; я к стрингам по индексам обращаюсь :)
Тем не менее - я не совсем упоротый фанат, который не переключается между языками в принципе. Я только пытаюсь минимизировать такие переключения и возможные сопутствующие ошибки.
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Как задать параметр даты в запросе? / 25 сообщений из 47, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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