Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2008, 00:04   #1
Light
 
Регистрация: 03.04.2008
Сообщений: 4
Печаль Связь Delphi с Access

Здравствуйте!
Мне необходимо связать Delphi с БД Access так,чтобы я ещё при этом могла через Access оперировать с "внешними" файлами: находить файл и открывать его содержимое по ссылке,которая храниться в БД Access.Реально ли это сдлеать?Вся проблема в том,что я никогда раньше не работала с Delphi... Буду очень благодарна,если сможете помочь или подсказать,с чего лучше начинать.
Заранее спасибо!
Light вне форума Ответить с цитированием
Старый 04.04.2008, 09:03   #2
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Light, а как понять оперировать с "внешними" файлами: находить файл и открывать его содержимое по ссылке,которая храниться в БД Access? Что за файлы Вы имеете в виду?
Цитата:
с чего лучше начинать
можно начать и с поиска по форуму, а можно в книге почитать.
фЁдОр вне форума Ответить с цитированием
Старый 04.04.2008, 12:52   #3
Light
 
Регистрация: 03.04.2008
Сообщений: 4
По умолчанию

C любым текстовым файлом.Например:в БД хранится ссылка на некоторый текстовый файл,в котором предоставлен список имен.Необходимо,чтобы Delphi,пройдя по этой ссылке,хранящейся в Access? открыл содержимое текстового файла.Примерно так.
Light вне форума Ответить с цитированием
Старый 04.04.2008, 14:10   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

А че тут такого сложного ???
Берешь строку адреса из базы - впихиваешь ее в путь к файлу и открываешь.
Кста: как ты собираешься отображать открытый файл?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 05.04.2008, 18:25   #5
Scorpy
 
Регистрация: 05.04.2008
Сообщений: 5
По умолчанию

Бросаешь на форму компоненты:

TADOConnection
TDataSource
TADOTable

В TADOConnection выбираешь свойство ConnectionString, кнопочку Build, потом выбрать драйвер Microsoft Jet 4.0 OLE DB. Потом выбираешь путь к файлу Акцесса, логин и пароль, если есть.

Теперь в компоненте TDataSource ставишь свойство ADOTable1 для связи.

В компоненте TADOTable в параметре TableName выбираешь имя таблицы Акцесса, с которой нужно работать. После этого поставить свойство Active в True.

Дальше можно вытаскивать компонент DbGrid и выставить свойство DataSourse в DataSourse1. После этого в сетке отобразится содержимое таблицы.

Это произошло только подключение к одной таблице Акцессовского файла. Для других таблиц нужно вытаскивать и также настраивать новые компоненты TDataSource и TADOTable.

Если в базе есть пути, можно эти пути копировать и октрывать по ним хоть в блокноте или Экселе. Если это текстовые файлы
Scorpy вне форума Ответить с цитированием
Старый 06.04.2008, 07:30   #6
Surgeon
Форумчанин
 
Регистрация: 04.10.2007
Сообщений: 106
По умолчанию

Дано : путь к файлу в отдельном поле базы данных.
Есть варианты в зависимости от типа файла:
- Если файл в формате с которым не хочется связываться, то открыть используя программу назначенную Windows для данного типа файла. Можно вызвать ShellExecute:
===
procedure TMainForm.N4Click(Sender: TObject);
var
articlefilename:string;
begin
articlefilename:=DataModule1.MainTa blepath.AsString;//забираю из поля путь как строку
ShellExecute(0,LPCTSTR('open'),LPCT STR(articlefilename),LPCTSTR(nil),L PCTSTR('C:\'),SW_SHOWNORMAL);
//вызываю открытие файла назначенной внешней программой
end;
===
- если текстовый файл или структура хорошо известна, то открыть собственными силами.
Например для текстового можно :
- поместить на главную форму TMemo и вызвать Memo1.Lines.LoadFromFile(articlefil ename);
- создать дополнительную форму с TMemo и открывать там

В Access есть тип данных "гиперссылка".
В своей базе я не стал его использовать а реализовал используя ShellExecute, поскольку не известен заранее тип открываемого файла.
Все не так плохо, как вам кажется, на самом деле все гораздо хуже.
http://delphiworld.narod.ru/dw.html - 5000 статей!!! удобный поиск, оффлайн сборник, рекомендую всем
Surgeon вне форума Ответить с цитированием
Старый 06.04.2008, 20:22   #7
Light
 
Регистрация: 03.04.2008
Сообщений: 4
По умолчанию

Спасибо всем!)
Light вне форума Ответить с цитированием
Старый 14.04.2008, 18:09   #8
Light
 
Регистрация: 03.04.2008
Сообщений: 4
По умолчанию

Подскажите,плиз,что нужно изменить здесь,чтобы перехват был не только с малой клавиатуры:
library dahook;
uses
Windows, Messages;
const
WM_DA_KEYHOOK = WMJJSER + 133;
var
SHook : HHook = 0;
function HookProc(code : Integer; wParam : Word; lParam :
Longlnt) : Longlnt; stdcall;
var
H: HWND;
KeyStates: TKeyboardState;
Buffer :Char; begin
if (Code = HC_ACTION) and (((lParam shr 16) and KF_UP) =0) then begin
if (GetKeyboardState(KeyStates)) then
if ToAscii(wParam, ((lParam shr 16) and $FFFF), KeyStates, @Buffer,O) = 1 then begin
H := FindWindow('TDAMainForm', nil);
SendMessage(H, WM_DA_KEYHOOK, wParam, Ord(Buffer)); end; end;
result:= CallNextHookEx(SHook, Code, wParam, lParam); end;
procedure SetHook(b : Boolean) export; stdcall; begin
if b then
begin
SHook := SetWindowsHookEx(WH_KEYBOARD, @HookProc, HInstance,0);
if (SHook = 0} then
MessageBox(0, 'He могу установить ловушку.',
'ERROR!', MB_OK and MB_ICONERROR); end else begin
if (SHook <> 0) then UnHookWindowsHookEx(SHook); SHook := 0; end; end;
exports
SetHook;
begin end.
Light вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
access+delphi+ado aid_013 БД в Delphi 2 10.07.2010 09:28
Связь таблиц в Delphi adinadin111 БД в Delphi 3 10.07.2008 14:50
Связь Oracle и Delphi Diavolito БД в Delphi 11 01.12.2007 18:05
Как из Delphi программно создать связь между двумя базами Access? Dimm Microsoft Office Access 6 12.01.2007 14:35
Связь базы Access через ADO Lex87 БД в Delphi 3 30.11.2006 07:38