Форум: "Базы";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];
Внизпоиск в большой базе Найти похожие ветки
← →
sherminator (2004-02-11 13:17) [0]есть база аксесовская... в ней штук 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 значений собранных из разных таблиц занимает длительное время...(((( может как-то можно иначе всё сделать???
← →
Johnmen (2004-02-11 13:19) [1]А в чем заключается обработка ?
← →
Sandman25 (2004-02-11 13:19) [2]select dolgn from fldolgn where idul = :idul
← →
Anatoly Podgoretsky (2004-02-11 13:20) [3]Конечно, если после нахождения перкращать цикл.
← →
VLAD-MAL (2004-02-11 13:23) [4]Ты, наверное, что-то там свое (объект) много раз создаешь, и не убиваешь потом.
Вообще, по-моему, с логикой построения базы какие-то траблы...
Чумовая операция какая-то... У тебя что, не известно, в каких таблицах какие поля? Создай тогда спец. таблицу - репозиторий, в которой список всех полей + где они лежат...
Таблица Repository:
Id Field_Name Table_Name
-------------------------
1 Id Repository
2 Field_Name Repository
3 Table_Name Repository
4 FLDOLGN Super_Puper_Table
...
Вообще, зачем тебе это понадобилось?
← →
sherminator (2004-02-11 13:25) [5]2Sandman25 можно поподробнее остановиться на структуре "select dolgn from fldolgn where idul = :idul"???????
2Anatoly Podgoretsky сенкс... на самом деле не продумал...
← →
sherminator (2004-02-11 13:31) [6]2VLAD-MAL где что лежит я знаю... проблема в том, что данные в одной таблице содержат ключи для того, чтобы найти данные, которые содержатся в другой таблице... вот и приходится лопатить по нескольку таблиц... построение базы согласен что шальное, но выбирать не приходится... что дают с тем и работаю...
← →
Sandman25 (2004-02-11 13:36) [7][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), то будут небольшие отличия в синтаксисе + надо будет создавать параметры вручную.
← →
Sandman25 (2004-02-11 13:38) [8]Только не
Query.ExecSQL, а:
Query.Open;
if Eof then
Label1.Caption := "А нету"
else
Label1.Caption := Query.Fields[0].AsString;
Query.Close;
← →
sherminator (2004-02-11 13:41) [9]2Sandman25 ваще полный ноль в использовании SQL...(((((( надо устанавливать SQL сервер??? можно будет продолжать работать с Access файлом????
← →
VLAD-MAL (2004-02-11 13:44) [10]Ну вы, блин, даете...
← →
SPIRIT (2004-02-11 13:45) [11]надо книжку купить ...
Access поддерживает sql .. пользуйся и радуйся :))
← →
Sandman25 (2004-02-11 13:45) [12][9] sherminator © (11.02.04 13:41)
Нет, Access сам является SQL сервером (в некотором роде).
Он вернет нужные данные.
← →
sherminator (2004-02-11 13:48) [13]оки... респект... спасибо буду пробовать...
← →
SPIRIT (2004-02-11 13:49) [14]кидай на форму *Query (в зависимости от подключения) связывай с TDataSource. На кнопочку выше приведенный текст и вперед на грабли :))
← →
Fay (2004-02-11 14:55) [15]>> select dolgn from fldolgn where idul = :idul
ОМС или МНС ?
← →
Mike Kouzmine (2004-02-11 15:02) [16]Сделай запрос в Аксесе, а на форме используй tadostoredproc
← →
sherminator (2004-02-11 16:12) [17]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 не могу разобрать...((((((
← →
Sandman25 (2004-02-11 16:16) [18]SELECT имяполя1 FROM имятаблицы WHERE имяполя2 = :любойидентификатор
Query.ParamByName("любойидентификатор").Asxxx := ...
← →
Mike Kouzmine (2004-02-11 16:17) [19]А ты сделай мастер-детайл связь и все.
← →
sherminator (2004-02-11 16:19) [20]Mike Kouzmine ты издеваешься надо мной да???? я сегодня первый раз юзать начал SQL...((((
← →
Mike Kouzmine (2004-02-11 16:21) [21]А SQL и мастер-детайл две разные вещи.
← →
sherminator (2004-02-11 16:23) [22]2Sandman25
Query.ParamByName("любойидентификатор").Asxxx := ...
это чему приравнивается???? справа, что должно стоять???? (вместо троеточия)
← →
Johnmen (2004-02-11 16:25) [23]>я сегодня первый раз юзать начал SQL
Ну как всегда. Изучение начинается в вопросов...:(
← →
Sandman25 (2004-02-11 16:26) [24][22] sherminator © (11.02.04 16:23)
Читайте книги. Delphi Help тоже подойдет.
← →
Mike Kouzmine (2004-02-11 16:27) [25]Johnmen © (11.02.04 16:25) [23] Надо читать так >я сегодня первый раз юзать начал
← →
Anatoly Podgoretsky (2004-02-11 16:56) [26]sherminator © (11.02.04 16:23) [22]
xxx
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c