powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Access+Builder+ADOQuery1 проблема с SQL запросом
7 сообщений из 7, страница 1 из 1
Access+Builder+ADOQuery1 проблема с SQL запросом
    #32511733
Mugger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть бд.
В ней ключевое поле типа 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
Access+Builder+ADOQuery1 проблема с SQL запросом
    #32511798
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Access+Builder+ADOQuery1 проблема с SQL запросом
    #32512227
Mugger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как там время дописать?
Запросы типа:
Код: 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
Access+Builder+ADOQuery1 проблема с SQL запросом
    #32512247
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пиши так

Код: 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
Access+Builder+ADOQuery1 проблема с SQL запросом
    #32517162
Mugger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за совет.
Перекопировал ваш пример в код.
Пишет: Несоотвествие типов данных в выражении условия отбора

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

 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Access+Builder+ADOQuery1 проблема с SQL запросом
    #32519447
Mugger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БОЛЬШОЕ СПАСИБО ЗА ПОМОЩЬ!
Получилось!
Вот код, если кому мош понадобиться:
Код: 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
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Access+Builder+ADOQuery1 проблема с SQL запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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