Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Народ подскажите как быть с ADO. Народ подскажите как быть с ADO. 
:(
    Опции темы
Guest_Артем
  Дата 18.5.2003, 14:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Народ подскажите как быть с ADO.
Пишу код на кнопку для поиска по таблице

ADOQuery1.SQL.text:='Select * From Activisti Where id='''+Edit1.text+'''';
ADOQuery1.Active:=true;

Ввожу данные в Edit, а том ошибка: Несоответствие типов данных в выражении условия отбора!!! Во как. Чё делать не знаю.
С простым query все работает, а тут блин база access и надо использовать ADO. Так что вся надежда на Вас!!!

  Вверх
Lobsang
Дата 19.5.2003, 06:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Скорее всего - ты пытаешься получить цифровое значение своим селектом, А передается для поиска - текст. (или наоборот) Вот тебе и не соответсвие типов. стал быть нужно встраивать преобразование в другой тип.
Да, и что у тебя с кавычками? обычно юзаются одинарные, а у тебя двойные.

  Вверх
Guest_Артем
Дата 19.5.2003, 10:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Понятно. Буду очень признателен, если наградишь примерчикомsmile.gif
  Вверх
Akella
Дата 19.5.2003, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Сделай в BDE псевдоним на базу Access и работай с TQuery & TTable
я так делал при подключении к файлам Excel
PM MAIL   Вверх
Dapo
Дата 20.5.2003, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



dsergey не самое удачное решение.

Guest_Artem, а без кавычек пробовал?
PM MAIL   Вверх
Medved
Дата 20.5.2003, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Попробуй так:

Код
ADOQuery1.SQL.text:='Select * From Activisti Where id='+Edit1.text;
ADOQuery1.Active:=true;



--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Lobsang
Дата 21.5.2003, 06:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











dsergey Товарищ ведь просит ADO, а не BDE, не так ли.

Гость_артем
Я пример кладу из своей проги - разберешься
BOSS - переменная строковая. Но что бы ее подложить в запрос пришлось так вот извращаться - ставить между тремя галочками.

begin
Boss:=DBComboBox1.Text;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select IDEmployees FROM Employees where SecondName = '''+Boss+''' ');
ADOQuery2.Active:=True;
ADOStoredProc1.Parameters.ParamValues['@NEBossIDEmployees']:=ADOQuery2.FieldValues['IDEmployees'];
end;
  Вверх
Guest_Артем
Дата 21.5.2003, 08:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо дружище, только вот у меня не вставляются числа, а со строками все нормально. Как быть?
  Вверх
Lobsang
Дата 21.5.2003, 08:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Во-первых, какой тип данных в базе и формат у чисел которые ты пытаешься вставить? Может они не совпадают?
Во -вторых, если ты пытаешься вставить число, то сначала его преобразуй в число из строки которую получаешь в своем EDIT'e
Скажем если бы мне нужно было в своем запросе вставлять переменную BOSS типа integer, то пришлось бы написать следующее.

BOSS:Integer;
begin
Boss:=StrToInt(DBComboBox1.Text);
...
end;
  Вверх
Guest_Артем
Дата 21.5.2003, 09:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











У меня в базе у поля id тип данных числовой.

  Вверх
Guest_Артем
Дата 21.5.2003, 09:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











короче пишу вот такую штуку:

procedure TClass_Form.Button1Click(Sender: TObject);
var
Boss:Integer;
begin
Boss:=StrToInt(ComboBox1.Text);

DataModule1.Class_ADOQuery1.Close;
DataModule1.Class_ADOQuery1.SQL.Clear;
DataModule1.Class_ADOQuery1.SQL.Add('Select * FROM Class where Class= '''+Boss+''' ');
DataModule1.Class_ADOQuery1.Active:=True;

end;


и вылетает при компиляции косячок: Incompatible types 'String' and 'Integer'
Чё за лажа?
  Вверх
Unregistered
Дата 21.5.2003, 09:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ну, братель, ну ты посмотри че пишешь! стока обсуждений...

...Class= '''+Boss+''' '...
где
Boss:Integer;
пиши так:
DataModule1.Class_ADOQuery1.SQL.Add('Select * FROM Class where Class= '+ComboBox1.Text);//если поле Class типа Int

  Вверх
Guest_Артем
Дата 21.5.2003, 10:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Кавычки убрал, и щас на кнопку жмешь и ничего не выводится. Как быть?
может в combobox-е надо че-нибудь начиркать?
  Вверх
Akella
Дата 21.5.2003, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Советую почитать и поработать с типами , а также с их преобрабозванием из одного типа в другой. Есть специальный функции, их очень много.
Даже в компонентах баз данных есть методы преобразования, например
в таблице есть поле ID - числовое (Long Integer), значение этого поля требуется вывести в метку TLabel:
Label1.Caption:=DataModule1.DataBase1.Table1.FieldByName('ID').AsString;
Этот код сразу преобразует целочисленное значение поля ID в строковое, т.к. свойство Caption метки Label1 является строковым (string).
PM MAIL   Вверх
Unregistered
Дата 21.5.2003, 11:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А что должно выводиться?
ты лучше после
...Active := True;
напиши еще так:
if DataModule1.Class_ADOQuery1.Active then ShowMessage('Все Ок!');

если увидишь сообщение то не греши на ADO (кстати класная штука...), занимайся теми компонентами которые "выводят"...;)
если сообщения не будеть пиши, бедем дальше разбераться.
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0777 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.