Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

поиск в большой базе [D7, Access]


Страницы:   1 2

sherminator ©   (2004-02-11 13:17:00) 

есть база аксесовская... в ней штук 20 таблиц... каждая содержит по нескольку десятков тысяч записей... каким образом ускорить поиск по этим таблицам??? использую следующий код:

Table1.TableName:="FLDOLGN";
Table1.Open;
Table1.First;
while not Table1.Eof do
begin
if Table1.FieldByName("IDUL").AsString = idul
then Label11.Caption := Table1.FieldByName("DOLGN").AsString;
Table1.Next;
end;
Table1.Close;

далее меняю значение TableName и продолжаю обработку следующей таблицы... проблема в том, что иногда выскакивает ошибка о нехватке памяти... да и если честно запрос с выводом порядка 12-15 значений собранных из разных таблиц занимает длительное время...(((( может как-то можно иначе всё сделать???


Anatoly Podgoretsky   (2004-02-11 16:56:00) [1]

sherminator © (11.02.04 16:23) [22]
xxx


Mike Kouzmine   (2004-02-11 16:27:00) [2]

Johnmen © (11.02.04 16:25) [23] Надо читать так >я сегодня первый раз юзать начал


Sandman25   (2004-02-11 16:26:00) [3]

[22] sherminator © (11.02.04 16:23)

Читайте книги. Delphi Help тоже подойдет.


Johnmen   (2004-02-11 16:25:00) [4]

>я сегодня первый раз юзать начал SQL

Ну как всегда. Изучение начинается в вопросов...:(


sherminator   (2004-02-11 16:23:00) [5]

2Sandman25
Query.ParamByName("любойидентификатор").Asxxx := ...
это чему приравнивается???? справа, что должно стоять???? (вместо троеточия)


Mike Kouzmine   (2004-02-11 16:21:00) [6]

А SQL и мастер-детайл две разные вещи.


sherminator   (2004-02-11 16:19:00) [7]

Mike Kouzmine ты издеваешься надо мной да???? я сегодня первый раз юзать начал SQL...((((


Mike Kouzmine   (2004-02-11 16:17:00) [8]

А ты сделай мастер-детайл связь и все.


Sandman25   (2004-02-11 16:16:00) [9]

SELECT имяполя1 FROM имятаблицы WHERE имяполя2 = :любойидентификатор
Query.ParamByName("любойидентификатор").Asxxx := ...


sherminator   (2004-02-11 16:12:00) [10]

Table1.First;
while not Table1.Eof do
begin
if Table1.FieldByName("INN").AsString = Edit1.Text
then
begin
Label3.Caption := Table1.FieldByName("IDUL").AsString;
idul := Table1.FieldByName("IDUL").AsString;
break;
end;
Table1.Next;
end;
Label5.Caption := Edit1.Text;
Table1.Close;

етишкина жизнь...(((((( а вот этот фрагмент как сделать средствами SQL???? первый пример, который привел не самый удачный оказался... имена полей в таблице и переменная совпадают... поэтому пояснение, которое было мне дано Sandman25 не могу разобрать...((((((


Mike Kouzmine   (2004-02-11 15:02:00) [11]

Сделай запрос в Аксесе, а на форме используй tadostoredproc


Fay   (2004-02-11 14:55:00) [12]

>> select dolgn from fldolgn where idul = :idul
ОМС или МНС ?


SPIRIT   (2004-02-11 13:49:00) [13]

кидай на форму *Query (в зависимости от подключения) связывай с TDataSource. На кнопочку выше приведенный текст и вперед на грабли :))


sherminator   (2004-02-11 13:48:00) [14]

оки... респект... спасибо буду пробовать...


Sandman25   (2004-02-11 13:45:00) [15]

[9] sherminator © (11.02.04 13:41)

Нет, Access сам является SQL сервером (в некотором роде).
Он вернет нужные данные.


SPIRIT   (2004-02-11 13:45:00) [16]

надо книжку купить ...
Access поддерживает sql .. пользуйся и радуйся :))


VLAD-MAL   (2004-02-11 13:44:00) [17]

Ну вы, блин, даете...


sherminator   (2004-02-11 13:41:00) [18]

2Sandman25 ваще полный ноль в использовании SQL...(((((( надо устанавливать SQL сервер??? можно будет продолжать работать с Access файлом????


Sandman25   (2004-02-11 13:38:00) [19]

Только не
Query.ExecSQL, а:

Query.Open;
if Eof then
Label1.Caption := "А нету"
else
Label1.Caption := Query.Fields[0].AsString;
Query.Close;


Sandman25   (2004-02-11 13:36:00) [20]

[5] sherminator © (11.02.04 13:25)

Использовать SQL.

Если через BDE (класс TQuery)
Query.SQL.Text := Format("select dolgn from %s where idul = :idul", ["FLDOLGN"]);
Query.Params[0].AsString := idul;
Query.ExecSQL;

Если через ADO (класс TADOQuery), то будут небольшие отличия в синтаксисе + надо будет создавать параметры вручную.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо