![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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?
|