![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
поиск в большой базе [D7, Access]
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), то будут небольшие отличия в синтаксисе + надо будет создавать параметры вручную.