|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
результат выборки в массив
Здравствуйте.
Подскажите, если кто знает, как в делфи передать результат выборки (SELECT column_name FROM table_name) в массив? База - MySQL, коннект через ADO. Спасибо. |
#2
|
||||
|
||||
Можно так:
Код:
Var Arr: Array of variant; begin SetLength(Arr,Query1.RecordsCount); i := 0; while not Query1.eof do begin Arr[i] := Query1.FieldValues['column_name']; Query1.next; Inc(i); end; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Говорит, что " Undeclared Identifier: RecordsCount"
Каким образом его объявлять надо? |
#4
|
||||
|
||||
Опечатка - RecordCount
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#5
|
|||
|
|||
спасибо
вроде заработало во всяком случае, пока ни на что больше не ругается |
#6
|
|||
|
|||
рано я порадовался...
постоянно вылетает сообщение ADOQuery1: cannot perform this operation on a closed dataset никак не разберусь в чем дело |
#7
|
||||
|
||||
А query1 вы хоть выполняете? Данные ведь не с потолка для заполнения массива берутся.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#8
|
|||
|
|||
блин...
что-то я уже окончательно запутался... Код:
procedure TForm1.Button2Click(Sender: TObject); var i: integer; Arr: Array of string; str: string; begin // i:=1; DataModuleUnit.ADOQuery1.Active:=False; DataModuleUnit.ADOQuery1.SQL.Text:='SELECT www FROM ats1.qqq'; DataModuleUnit.ADOQuery1.open; DataModuleUnit.ADOQuery1.First; while not DataModuleUnit.ADOQuery1.eof do begin Arr[1]:= DataModuleUnit.ADOQuery1.FieldValues['www'].asstring; // str:= DataModuleUnit.ADOQuery1.FieldValues['www'].asstring; str:=Arr[1]; Edit1.Text:=str; //DataModuleUnit.ADOQuery1.next; // Inc(i); end; end; процесс тормозится на DataModuleUnit.ADOQuery1.open с сообщением "Project Project1.exe raised exeption class EOleExeption with message 'Поставщик данных или другая служба вернули состояние E_FAIL' Process stoped" т.е сейчас пытаюсь просто передать значение поля в Едит1 Последний раз редактировалось Admin, 17.05.2009 в 18:30. |
#9
|
||||
|
||||
Попробуйте переименовать таблицу, заменив точку в ats1.qqq на подчеркивание.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#10
|
|||
|
|||
Я вообще к чему веду...
я пытаюсь сделать следующее: выбрать все поля заданного столбца в массив, затем каждый элемент массива посимвольно разложить в еще один массив. Это нужно для поиска в другой таблице записи по нескольким символам полученного в конце массива |
#11
|
|||
|
|||
Цитата:
это я проглядел... я просто ради экспериметна вставил запрос, который выводится в Query Brouser. ats1.qqq - база.таблица т.е. назв. таблицы - qqq но вообще то я до этого писал SELECT www FROM qqq но результат тот-же... |
#12
|
||||
|
||||
Может проблема в БД? Что за БД вы используете - Paradox,MsAcess,DBF или вообще Text?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#13
|
|||
|
|||
MySQL server 5.0 (локальный)
C делфи через MySQL ODBC connector соединяю |
#14
|
|||
|
|||
В остальной части программы все запросы работают без проблем.
Правда там я использовал вместо ТADOQuery ТADOCommand. Но опять же до этого я делал через Query запросы ради эксперимента - тоже все нормально было... |
#15
|
||||
|
||||
А вы случайно незабыли заполнить в вашем ADOQuery.Connection?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |