Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Вниз

Файлы в Access   Найти похожие ветки 

 
kblc ©   (2005-02-12 23:24) [0]

Уважаемые мастера,
у меня к вам вопросы:
- Как в в определённо поле таблицы загонять *.doc, *.xls, и возможно image файлы(т.е. какой формат должна иметь ячейка таблицы?) и как лучше всего это реализовать.
- А как лучше всего их там хранить (мне сообщили, что при добавлении небольших файлов(примера я не видел), таблица вырастает где то (размер того файла * 5). Почему?
- Как можно зжать базу, и будет ли от этого уменьшена скорость работы приложений? (т.е. при помощи запроса)

Всё это я спрашиваю про MS Access 97-2003


 
sniknik ©   (2005-02-13 01:13) [1]

1
"Поле объекта OLE"
TBlobField(ADODataSet1.FieldByName("x")).LoadFromFile("x.x");
TBlobField(ADODataSet1.FieldByName("x")).LoadFromStream(xStream);

2
там страничная организация, это значит если размер превысит хоть на один байт существующюю страницу то добавится новая несколько мегабайт. (скорость записи по готовой выше чем на каждый байт файл расширять)
плюс какаято рабочая область (обьеденения/запросы извне делаются в ней, и там тоже страничная организация... ;о))) возможны ситуации когда в страницах появляются "дырки", незаполненые зоны.
убирается это паковкой базы.

3
конечно будет, сжатая база в работе начнет немедленно увеличиваться (вот те самые рабояие области создавать) на время увеличений и будут задержки.
вообще лучше не трогать без необходимости, ну или делать паковку достаточно редко (раз в неделю к примеру), а не после каждой записи. резко размер растет только вначале... реально данных именно столько сколько положил (по размеру) .
но изредка делать всетаки необходимо, для профилактики, дело в том что упаковка по совместительству является и "ремонтником" базы.

лишнее выкини

function TDMod.PackAccess(BaseName: string): boolean;
var je: Variant;
   sPath: string;
begin
 result:= false;
 BaseName:= GetMdbName(BaseName);
 sPath:= ExtractFilePath(BaseName);
 try
   try
     ADOConnection1.Close;
     ADOConnection2.Close;
     je:=CreateOleObject("JRO.JetEngine");
     je.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;"+
                        "Data Source="+BaseName+";",
                        "Provider=Microsoft.Jet.OLEDB.4.0;"+
                        "Data Source="+sPath+"NewBase$$$.Mdb;"+
                        "Jet OLEDB:Encrypt Database=True");
     DeleteFile(BaseName);
     RenameFile(sPath+"NewBase$$$.Mdb", BaseName);
     result:= true;
   except
     on E: Exception do DoIfError(E.Message);
   end;
 finally
   je:= Null;
 end;
end;


 
kblc ©   (2005-02-13 21:09) [2]

2sniknik:
Большое тебе спасибо!

И ещё фопрос: А как закидывать туда файл, который создан через OLE? т.е. есть, скажем, какой-то вордовский файл, работа с которым ведёться через OLE, как не сохраняя этот файл на диск закинуть его в базу?


 
kblc ©   (2005-02-14 02:44) [3]

и вот ещё проблемка:

при выполнении je.CompactDatabase("...") у меня вылетает ошибка: Недопустимое число параметров. Почему?


 
sniknik ©   (2005-02-14 08:17) [4]

потому что у тебя количество параметров не такое как нужно/как я привел. переписывать надо акуратно.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.317 c
14-1108703061
DelphiN!
2005-02-18 08:04
2005.03.13
Жизнь в Одессе


14-1108984691
kaZaNoVa
2005-02-21 14:18
2005.03.13
Дайджесты форумов, и html-формат


9-1103044828
FRick
2004-12-14 20:20
2005.03.13
Игровое меню!


3-1108038233
midavik
2005-02-10 15:23
2005.03.13
Время выполнения запроса.


3-1108024853
sashag
2005-02-10 11:40
2005.03.13
SET ROLE в Делфи (DOA, Oracle)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский