Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.11.2010, 11:53   #1
WALL
Пользователь
 
Регистрация: 04.10.2010
Сообщений: 67
По умолчанию запрос на дату

Вот в чем вопрос - на dat1 и dat2 пишет ошибку Undeclared identifier, как исправить ?
Код:
    With Form2.ADOQuery2 do
           Begin
             If Active Then
                Close;
             SQL[2] := 'WHERE Дата_завершения  BETWEEN :Dat1 AND :Dat2;';
             Parameters[0].DataType:=ftDate;
             Parameters[0].Value:=Dat1;
             Parameters[1].DataType:=ftDate;
             Parameters[1].Value:=Dat2;
             Open;
 if (ADOQuery2.RecordCount>=1) then
 else
     MessageDlg('Нужно пройти врача', mtInformation,[mbOK],0)
      end
end;

Последний раз редактировалось mihali4; 03.11.2010 в 12:28.
WALL вне форума
Старый 03.11.2010, 12:36   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Задайте в инспекторе объектов параметры dat1 и dat2 вручную, явно...
mihali4 вне форума
Старый 03.11.2010, 12:40   #3
WALL
Пользователь
 
Регистрация: 04.10.2010
Сообщений: 67
По умолчанию

задал в ручную, тоже самое
WALL вне форума
Старый 03.11.2010, 12:46   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Что такое
SQL[2] := 'WHERE Дата_завершения BETWEEN :Dat1 AND :Dat2;'; ?
А где SQL[1] ? А где операция их суммирования ? Где операция присвоения Form2.ADOQuery2.SQL.Text ?

З.Ы. А это что такое ?
Код:
SQL[2] := 'WHERE Дата_завершения  BETWEEN :Dat1 AND :Dat2;';
...
Parameters[0].Value:=Dat1; !!!
Посмотрели бы хоть пример из штатного хэлпа:
Код:
Query2.SQL.Clear;

Query2.SQL.Add('INSERT INTO COUNTRY (NAME, CAPITAL, POPULATION)');
Query2.SQL.Add('VALUES (:Name, :Capital, :Population)');

Query2.Params[0].AsString := 'Liechtenstein';
Query2.Params[1].AsString := 'Vaduz';
Query2.Params[2].AsInteger := 420000;
Query2.ExecSQL;
или
Цитата:
Supplying parameters at runtime

To create parameters at runtime, you can use the

ParamByName method to assign values to a parameter based on its name (not available for TADOQuery)
Params or Parameters property to assign values to a parameter based on the parameter's ordinal position within the SQL statement.
Params.ParamValues or Parameters.ParamValues property to assign values to one or more parameters in a single command line, based on the name of each parameter set.

The following code uses ParamByName to assign the text of an edit box to the :Capital parameter:

SQLQuery1.ParamByName('Capital').As String := Edit1.Text;

The same code can be rewritten using the Params property, using an index of 0 (assuming the :Capital parameter is the first parameter in the SQL statement):

SQLQuery1.Params[0].AsString := Edit1.Text;

The command line below sets three parameters at once, using the Params.ParamValues property:

Query1.Params.ParamValues['Name;Capital;Continent'] :=
VarArrayOf([Edit1.Text, Edit2.Text, Edit3.Text]);

Note that ParamValues uses Variants, avoiding the need to cast values.

Последний раз редактировалось mihali4; 03.11.2010 в 13:13.
mihali4 вне форума
Старый 03.11.2010, 12:48   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
var Dat1, Dat2: TDateTime;

Dat1:= Date; 
Dat2:= //чему-то там......или компилятор сам догадаться должен?
_SERGEYX_ вне форума
Старый 03.11.2010, 12:51   #6
WALL
Пользователь
 
Регистрация: 04.10.2010
Сообщений: 67
По умолчанию

Обьясните пожалуйста как правильно. Спасибо большое
WALL вне форума
Старый 03.11.2010, 12:56   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Смотрите п.4
mihali4 вне форума
Старый 03.11.2010, 13:14   #8
WALL
Пользователь
 
Регистрация: 04.10.2010
Сообщений: 67
По умолчанию

опишите по подробнее а то че то я не втыкаю, простите
WALL вне форума
Старый 03.11.2010, 23:16   #9
palevg
Пользователь
 
Аватар для palevg
 
Регистрация: 03.10.2010
Сообщений: 77
По умолчанию

Куда уж подробнее? Тут такие киты объяснили уже ))))))
Попробую по-другому (типа, для танкистов)

Цитата:
Сообщение от WALL Посмотреть сообщение
Вот в чем вопрос - на dat1 и dat2 пишет ошибку Undeclared identifier, как исправить ?
Ясен перец, ошибка. У Вас ведь Dat1 и Dat2 не объявлены (например, var Dat1, Dat2: TDate).
Как вариант, попробуйте изменить код совсем немножко, ну хоть вот так:
Код:
    With Form2.ADOQuery2 do
           Begin
             If Active Then
                Close;
             SQL[2] := 'WHERE Дата_завершения  BETWEEN :Dat1 AND :Dat2;';
             Parameters[0].DataType:=ftDate;
             Parameters[0].Value:=Date;
             Parameters[1].DataType:=ftDate;
             Parameters[1].Value:=Date;
             Open;
 if (ADOQuery2.RecordCount>=1) then
 else
     MessageDlg('Нужно пройти врача', mtInformation,[mbOK],0)
      end
end;
Date в коде - это дата сегодняшнего дня. Ошибки уже не будет. А дальше поставите свой код.
По соотношению цена-качество, халявное пиво не имеет конкурентов.
palevg вне форума
Старый 05.11.2010, 11:25   #10
WALL
Пользователь
 
Регистрация: 04.10.2010
Сообщений: 67
По умолчанию

Цитата:
Сообщение от palevg Посмотреть сообщение
Куда уж подробнее? Тут такие киты объяснили уже ))))))
Попробую по-другому (типа, для танкистов)



Ясен перец, ошибка. У Вас ведь Dat1 и Dat2 не объявлены (например, var Dat1, Dat2: TDate).
Как вариант, попробуйте изменить код совсем немножко, ну хоть вот так:
Код:
    With Form2.ADOQuery2 do
           Begin
             If Active Then
                Close;
             SQL[2] := 'WHERE Дата_завершения  BETWEEN :Dat1 AND :Dat2;';
             Parameters[0].DataType:=ftDate;
             Parameters[0].Value:=Date;
             Parameters[1].DataType:=ftDate;
             Parameters[1].Value:=Date;
             Open;
 if (ADOQuery2.RecordCount>=1) then
 else
     MessageDlg('Нужно пройти врача', mtInformation,[mbOK],0)
      end
end;
Date в коде - это дата сегодняшнего дня. Ошибки уже не будет. А дальше поставите свой код.
ошибка list index out of bounds 2

3. Не флудить. Флудом (пустой болтовней) считается все, не относящееся к теме. Здесь не чат, а форум серьезно увлеченных людей.
К флуду относится также:
- необоснованное (не требующееся по смыслу) цитирование предыдущего поста;
- размещение своих постов подряд друг за другом - пользуйтесь кнопкой "Правка" для изменения своего сообщения.
За флуд - автор поста получит нарушение №1 - "Флуд" и 2 очка штрафа.

Последний раз редактировалось mihali4; 05.11.2010 в 14:57.
WALL вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразовать дату Nekr0n Помощь студентам 0 09.10.2010 18:54
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Преобразовать в дату Marvel Microsoft Office Excel 21 22.01.2009 06:42
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50