Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Access+Builder+ADOQuery1 проблема с SQL запросом / 7 сообщений из 7, страница 1 из 1
09.05.2004, 16:20
    #32511733
Mugger
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+Builder+ADOQuery1 проблема с SQL запросом
Есть бд.
В ней ключевое поле типа DATETIME. Есть 5 записей.
Задача, проверить существует ли уже запись.
Записываю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  float b; 
  ShortDateFormat = "dd.mm.yy";
  b=StrToDateTime(EditTemp);// EditTemp= 07 . 02 . 04   10 : 05 : 02 
  DataModule2->TGeneral_Info->Insert();
  DataModule2->TGeneral_Info->FieldByName("Date_Time")->AsDateTime=b;
  if (DataModule2->TGeneral_Info->Modified)
     DataModule2->TGeneral_Info->Post(); 
Далее для проверки использую код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
  EditText=FloatToStr(b);
  if (AnsiPos(',',EditText)> 0 ) EditText[AnsiPos(',',EditText)]='.';
  EditText="select  * from General_Info where (Date_Time="+EditText+")";
  DataModule2->ADOQuery1->Active=false;
  DataModule2->ADOQuery1->SQL->Clear();
  DataModule2->ADOQuery1->SQL->Add(EditText);
  DataModule2->ADOQuery1->Active=true;
  DataModule2->ADOQuery1->RecordCount;
И почемуто RecordCount=0.....
а если так:
Код: plaintext
1.
2.
3.
.....
  EditText="select  * from General_Info where (Date_Time<>"+EditText+")";
....
, то RecordCount=4

Т.е. это доказывает что одна из записей всёже равна EditText....
Почемуже он при запросе с "=" пишет что нуль записей? А при обратном запросе не 5, а 4?
...
Рейтинг: 0 / 0
09.05.2004, 21:27
    #32511798
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+Builder+ADOQuery1 проблема с SQL запросом
...
Рейтинг: 0 / 0
10.05.2004, 18:23
    #32512227
Mugger
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+Builder+ADOQuery1 проблема с SQL запросом
А как там время дописать?
Запросы типа:
Код: plaintext
1.
select * from General_Info where Date_Time= # 02 . 06 . 2004 #
Вызывают сообщения о синтаксической ошибке, а типа:
Код: plaintext
1.
select * from General_Info where Date_Time= # 02 . 06 . 2004   1 : 39 : 05 #
говорит о неправельных или несовместимых данных.

Как правильно?
...
Рейтинг: 0 / 0
10.05.2004, 18:47
    #32512247
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+Builder+ADOQuery1 проблема с SQL запросом
пиши так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
String dts= Now().FormatString("yyyymmdd");

String sql_cmd = "select count(*) from General_Info where Date_Time='" + dts + "'"; 

TADOQuery *rec = DataModule2->ADOQuery1;
rec->Active=false;
rec->SQL->Clear();
rec->SQL->Add(sql_cmd);
rec->Active=true;

bool isDataExist = rec->Fields->Fields[ 0 ]->AsInteger > NULL;
rec->Close();


...
Рейтинг: 0 / 0
14.05.2004, 00:27
    #32517162
Mugger
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+Builder+ADOQuery1 проблема с SQL запросом
Спасибо за совет.
Перекопировал ваш пример в код.
Пишет: Несоотвествие типов данных в выражении условия отбора

Вот так.
И почему текстом? Я ошибаюсь, или поле типа DateTime храниться в формате float? Так почему мы запрос выдаём текстовым типом?
Или он на лету перекодирует?
...
Рейтинг: 0 / 0
14.05.2004, 12:00
    #32517683
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+Builder+ADOQuery1 проблема с SQL запросом
Попробуй через параметры работать .

 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
16.05.2004, 18:11
    #32519447
Mugger
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+Builder+ADOQuery1 проблема с SQL запросом
БОЛЬШОЕ СПАСИБО ЗА ПОМОЩЬ!
Получилось!
Вот код, если кому мош понадобиться:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  ShortDateFormat = "dd.mm.yy";
  TDateTime b=StrToDateTime(EditTemp);
  String sql_cmd = "select  * from General_Info where Date_Time= :Det ";
  TADOQuery *rec = DataModule2->ADOQuery1;
  rec->Active=false;
  rec->SQL->Clear();
  rec->SQL->Add(sql_cmd);
  rec->Parameters[ 0 ].ParamValues["Det"]=b /*EditTemp*/ ;
  rec->Active=true;
  bool isDataExist = rec->RecordCount >  0 ;
  rec->Close();
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Access+Builder+ADOQuery1 проблема с SQL запросом / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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