|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.04.2008, 00:04 | #1 |
Регистрация: 03.04.2008
Сообщений: 4
|
Связь Delphi с Access
Здравствуйте!
Мне необходимо связать Delphi с БД Access так,чтобы я ещё при этом могла через Access оперировать с "внешними" файлами: находить файл и открывать его содержимое по ссылке,которая храниться в БД Access.Реально ли это сдлеать?Вся проблема в том,что я никогда раньше не работала с Delphi... Буду очень благодарна,если сможете помочь или подсказать,с чего лучше начинать. Заранее спасибо! |
04.04.2008, 09:03 | #2 | |
Форумчанин
Регистрация: 06.09.2007
Сообщений: 908
|
Light, а как понять оперировать с "внешними" файлами: находить файл и открывать его содержимое по ссылке,которая храниться в БД Access? Что за файлы Вы имеете в виду?
Цитата:
|
|
04.04.2008, 12:52 | #3 |
Регистрация: 03.04.2008
Сообщений: 4
|
C любым текстовым файлом.Например:в БД хранится ссылка на некоторый текстовый файл,в котором предоставлен список имен.Необходимо,чтобы Delphi,пройдя по этой ссылке,хранящейся в Access? открыл содержимое текстового файла.Примерно так.
|
04.04.2008, 14:10 | #4 |
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
А че тут такого сложного ???
Берешь строку адреса из базы - впихиваешь ее в путь к файлу и открываешь. Кста: как ты собираешься отображать открытый файл?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... |
05.04.2008, 18:25 | #5 |
Регистрация: 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. Если в базе есть пути, можно эти пути копировать и октрывать по ним хоть в блокноте или Экселе. Если это текстовые файлы |
06.04.2008, 07:30 | #6 |
Форумчанин
Регистрация: 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 статей!!! удобный поиск, оффлайн сборник, рекомендую всем |
06.04.2008, 20:22 | #7 |
Регистрация: 03.04.2008
Сообщений: 4
|
Спасибо всем!)
|
14.04.2008, 18:09 | #8 |
Регистрация: 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. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |