![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Guest_Артем |
|
|||
|
Unregistered |
Народ подскажите как быть с ADO.
Пишу код на кнопку для поиска по таблице ADOQuery1.SQL.text:='Select * From Activisti Where id='''+Edit1.text+''''; ADOQuery1.Active:=true; Ввожу данные в Edit, а том ошибка: Несоответствие типов данных в выражении условия отбора!!! Во как. Чё делать не знаю. С простым query все работает, а тут блин база access и надо использовать ADO. Так что вся надежда на Вас!!! |
|||
|
||||
| Lobsang |
|
|||
|
Unregistered |
Скорее всего - ты пытаешься получить цифровое значение своим селектом, А передается для поиска - текст. (или наоборот) Вот тебе и не соответсвие типов. стал быть нужно встраивать преобразование в другой тип.
Да, и что у тебя с кавычками? обычно юзаются одинарные, а у тебя двойные. |
|||
|
||||
| Guest_Артем |
|
|||
|
Unregistered |
Понятно. Буду очень признателен, если наградишь примерчиком
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Сделай в BDE псевдоним на базу Access и работай с TQuery & TTable
я так делал при подключении к файлам Excel |
|||
|
||||
| Dapo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 18.4.2002 Репутация: нет Всего: 1 |
dsergey не самое удачное решение.
Guest_Artem, а без кавычек пробовал? |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Попробуй так:
-------------------- |
|||
|
||||
| Lobsang |
|
|||
|
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_Артем |
|
|||
|
Unregistered |
Спасибо дружище, только вот у меня не вставляются числа, а со строками все нормально. Как быть?
|
|||
|
||||
| Lobsang |
|
|||
|
Unregistered |
Во-первых, какой тип данных в базе и формат у чисел которые ты пытаешься вставить? Может они не совпадают?
Во -вторых, если ты пытаешься вставить число, то сначала его преобразуй в число из строки которую получаешь в своем EDIT'e Скажем если бы мне нужно было в своем запросе вставлять переменную BOSS типа integer, то пришлось бы написать следующее. BOSS:Integer; begin Boss:=StrToInt(DBComboBox1.Text); ... end; |
|||
|
||||
| Guest_Артем |
|
|||
|
Unregistered |
У меня в базе у поля id тип данных числовой.
|
|||
|
||||
| Guest_Артем |
|
|||
|
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 |
|
|||
|
Unregistered |
Ну, братель, ну ты посмотри че пишешь! стока обсуждений...
...Class= '''+Boss+''' '... где Boss:Integer; пиши так: DataModule1.Class_ADOQuery1.SQL.Add('Select * FROM Class where Class= '+ComboBox1.Text);//если поле Class типа Int |
|||
|
||||
| Guest_Артем |
|
|||
|
Unregistered |
Кавычки убрал, и щас на кнопку жмешь и ничего не выводится. Как быть?
может в combobox-е надо че-нибудь начиркать? |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Советую почитать и поработать с типами , а также с их преобрабозванием из одного типа в другой. Есть специальный функции, их очень много.
Даже в компонентах баз данных есть методы преобразования, например в таблице есть поле ID - числовое (Long Integer), значение этого поля требуется вывести в метку TLabel: Label1.Caption:=DataModule1.DataBase1.Table1.FieldByName('ID').AsString; Этот код сразу преобразует целочисленное значение поля ID в строковое, т.к. свойство Caption метки Label1 является строковым (string). |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
А что должно выводиться?
ты лучше после ...Active := True; напиши еще так: if DataModule1.Class_ADOQuery1.Active then ShowMessage('Все Ок!'); если увидишь сообщение то не греши на ADO (кстати класная штука...), занимайся теми компонентами которые "выводят"...;) если сообщения не будеть пиши, бедем дальше разбераться. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |