-
Еще раз хочу обратить внимание - если написать так
with ADODataSet1 do
begin
Close;
CommandText:=
'SELECT Call, DateQSO+TimeQSO AS DateTimeQSO FROM RX4HX '+
'WHERE Call = \"9E1S\" '+
'ORDER BY 2';
Open;
end;
Все правильно находится.
-
Так он возвращает выборку. Только не поймешь какую.
Он возвращает как раз поймешь какую выборку.
Ту, в которой записи, удовлетворяющие условию where
-
>На его месте пишется (VARBYTES) - по ходу все же это проблемы Access'а...
Значит тип параметра задан не верно.
-
Может я чего то не понимаю?
> Ту, в которой записи, удовлетворяющие условию where
Запрос был:
with ADODataSet1 do
begin
Active := False;
CommandText := 'SELECT Call,(DateQSO+TimeQSO) AS DateTimeQSO FROM RX4HX WHERE (DateQSO+TimeQSO)> :DateTimeQSO';
ADODataSet1.Parameters.ParamByName('DateTimeQSO').Value := Now;
Active := True;
end;
Вернулись записи:
OK1YDM 28.08.2001 8:06:00
ON4ADN 29.08.2001 8:33:00
...............
Каким образом эти записи соответствуют WHERE?
-
Каким образом эти записи соответствуют WHERE?
Прямым.
ps: а тебе зачем вообще sql сервер?
pps: если ты сам силой мысли можешь делать выборки, причем делаешь это правильнее чем сам сервер?
-
> Прямым.
Послушай, объясни толком - почему выборка этих значений является правильной?
Кстати если делать так
with ADODataSet1 do
begin
Active := False;
CommandText := 'SELECT Call,(DateQSO+TimeQSO) AS DateTimeQSO FROM RX4HX WHERE DateTimeQSO> :DateTimeQSO';
ADODataSet1.Parameters.ParamByName('DateTimeQSO').Value := Now;
Active := True;
end;
Пишет ошибку: Отсутствует значение для одного или нескольких требуемых параметров.
-
> Каким образом эти записи соответствуют WHERE?
> + второй параметр с тем же значением и проверяй за машиной... раз не веришь
-
> Пишет ошибку: Отсутствует значение для одного или нескольких требуемых параметров.
например ввел неправильное поле, которого нет, сам jet (не обертка/дельфи) в некоторых случаях считает неизвестное параметром.
-
Послушай, объясни толком - почему выборка этих значений является правильной?
Бессмысленный вопрос.
Выборку формирует сервер.
А сервер не виноват и всегда прав.
Кроме того, сервер писан не двоечниками и считать выражения умеет правильно в отличие от.
-
> неизвестное параметром.
понятно что
SELECT Call,(DateQSO+TimeQSO) AS DateTimeQSO FROM RX4HX WHERE DateTimeQSO> :DateTimeQSO
-
понятно что
хм скрипт кода переформатирует код... если стоит то
SELECT Call,(DateQSO+TimeQSO) AS DateTimeQSO FROM RX4HX WHERE DateTimeQSO> :DateTimeQSO
-
> А сервер не виноват и всегда прав.
Согласен. Я это и не оспариваю - я пытаюсь найти ошибку у себя - пока не получается.
[29] - Не понял ? Где проблема в этом выражении?
-
лет десять назад я бы взял и тупо бы добавил в список полей селекта сам параметр.
а потом посмотрел бы чему равно поле и чему равен параметр.
так я делал когда тоже считал, что иногда сервер вставляет в выборку не те записи что надо, и не вставляет те что надо.
-
> Не понял ? Где проблема в этом выражении?
у тебя есть в таблице поле DateTimeQSO? ну вот, получается jet-овский параметр сравниваешь с "дельфийским". причем jet-овский как пишет ошибка не инициализирован, без значения.
-
> лет десять назад я бы взял и тупо бы добавил в список полей селекта сам параметр.
> а потом посмотрел бы чему равно поле и чему равен параметр.
я ему предлагал... не проникся. ниче через 10 лет дойдет.
-
> у тебя есть в таблице поле DateTimeQSO?
Нет.
-
Для пробы попробовал так -
with ADODataSet1 do
begin
Active := False;
CommandText := 'SELECT Call,(DateQSO+TimeQSO) AS DateTimeQSO, :DT AS Hello FROM RX4HX WHERE (DateQSO+TimeQSO)>:DateTimeQSO';
ADODataSet1.Parameters.ParamByName('DateTimeQSO').Value := Now;
ADODataSet1.Parameters.ParamByName('DT').Value := 'Hello!';
Active := True;
end;
На месте :DT тоже пишется (VARBYTES) - параметр DT задак как стринг. Тоже не понятно почему...
-
CommandText := 'SELECT Call,(DateQSO+TimeQSO) AS DateTimeQSO FROM RX4HX WHERE DateTimeQSO> :DateTimeQSO';
Нельзя использовать алиас в выборке:
CommandText := 'SELECT Call,(DateQSO+TimeQSO) AS DateTimeQSO FROM RX4HX WHERE (DateQSO+TimeQSO)> :DateTimeQSO';
Сделай такой же запрос в акцессе и проверь выборку.
-
> параметр DT задак как стринг. Тоже не понятно почему...
??? задал и не понятно почему? само оно никак не задается (при "андефайне" дает по типу присваиваемого значения)
-
with ADODataSet1 do
begin
Active := False;
CommandText := 'SELECT Call,(DateQSO+TimeQSO) AS DateTimeQSO, :DT AS Hello FROM RX4HX WHERE (DateQSO+TimeQSO)>:DateTimeQSO';
ADODataSet1.Parameters.ParamByName('DateTimeQSO').DataType:=ftDateTime;
ADODataSet1.Parameters.ParamByName('DateTimeQSO').Value := Now;
ADODataSet1.Parameters.ParamByName('DT').DataType:=ftString;
ADODataSet1.Parameters.ParamByName('DT').Value := 'Hello!';
Active := True;
end;