Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Гиперссылка в таблице MS Access


Автор: Novichek27 16.5.2010, 09:22
Доброго времени суток всем участникам форума.
Столкнулся с такой проблемой: не могу открыть гиперссылку  в поле таблицы MS Access с типом данных "Гиперссылка" с помощью Delphi7.

Пробовал так: 

procedure TForm1.BitBtn2Click(Sender: TObject);
var s:string;
begin
s:=AdoQuery1.FieldValues['Reference'];
ShellExecute(Handle,nil,pchar(s),'' ,'',SW_SHOWNORMAL);
end;

В ответ никакой реакции...

А вот это работает
procedure TForm1.Label1Click(Sender: TObject);
begin
ShellExecute(handle,'open','C:\data\d1.bmp',nil,nil,SW_SHOW);
end;
но мне нужно именно выдергивать из таблицы.
Прошу поделиться опытом

Автор: Данкинг 16.5.2010, 10:16
Вроде как я уже отвечал http://forum.vingrad.ru/index.php?showtopic=300447&view=findpost&p=2153250 на этот вопрос. Там мы сошлись на том, что следует выделить адрес из текстовой переменной S (т.е. из значения поля). 

Автор: Novichek27 16.5.2010, 10:41
Адрес выделен и отображен в Label'e как путь к файлу, дальше та же песня.

Данкинг
  если знаешь как этот вопрос решить подскажи пожалуйста.

Автор: Данкинг 16.5.2010, 10:43
Цитата(Novichek27 @  16.5.2010,  11:41 Найти цитируемый пост)
Адрес выделен и отображен в Label'e как путь к файлу, дальше та же песня.

Что именно отображается в Label'е ? smile Т.е. в каком виде адрес?

Автор: Novichek27 16.5.2010, 10:44
и не важно к какой теме он относится...

Добавлено через 5 минут и 52 секунды
отображен в Label'e как путь к файлу т. е. : C:\data\pictures\first.dwg#   // c решеткой чето

Добавлено через 11 минут и 48 секунд
I'am sorry ни в Label а DBText'e

Автор: Данкинг 16.5.2010, 10:57
Цитата(Novichek27 @  16.5.2010,  11:44 Найти цитируемый пост)
отображен в Label'e как путь к файлу т. е. : C:\data\pictures\first.dwg#

При чём здесь гиперссылка тогда? Вроде речь шла о ссылке как таковой, т.е. www.ya.ru и т.п.
Если надо убрать знак #, то:
Код

s:=trim(stringreplace('C:\data\pictures\first.dwg#','#',' ',[rfReplaceAll]));

Цитата(Novichek27 @  16.5.2010,  11:44 Найти цитируемый пост)
и не важно к какой теме он относится...

Для кого неважно?

Добавлено через 2 минуты и 2 секунды
Цитата(Novichek27 @  16.5.2010,  11:44 Найти цитируемый пост)
I'am sorry 

Ты хотел сказать "I am ... ' или "I'm...' ? smile Но суть не в этом: значение в переменной S, вот оттуда мы его и берём.

Автор: Novichek27 16.5.2010, 11:10
Да не важно где че отображается, мне просто нужно нажать на ГИПЕРССЫЛКУ находящуюся БД Access через мою форму в Delphi так чтобы она открылась(т.е. конечный файл) и все...

Автор: Данкинг 16.5.2010, 11:44
Novichek27, в общем, сам определись, что хочешь, а потом уже чётко сформулируй вопрос. smile 

Автор: former 16.5.2010, 13:16
Для начала пусть правила форума прочтет и перестанет темы дублировать в разных разделах! smile 

Автор: Данкинг 16.5.2010, 13:41
former, и это тоже. smile 

Автор: Novichek27 16.5.2010, 14:28
Господа, Я хочу открыть файл(любой) пройдя через гиперссылку в MS Access таблице средствами Delphi.

С помощью ADO было создано подключение к базе данных MS Access.

В одной из таблиц есть поле с типом данных "Гиперссылка", и соответственно сама гиперссылка на определенный файл.

В самой таблице можно открыть файл просто нажав на гиперссылку.

Как сделать так чтобы он открывался при нажатии Кнопки или Метки в программе созданной в Delphi?
 

Думаю что вопрос понятен и сформулирован четко.  

Все что пробовал см. выше.

Автор: Данкинг 16.5.2010, 14:51
Novichek27, значит, подумать так и не хочешь. smile Тогда объясняю: путь к файлу (c:\aaa.txt) в поле "гиперссылка" отображается с диезами по краям (#c:\aaa.txt#). Я этого не знал до сегодняшнего дня (равно как и ты) и специально посмотрел в специально созданной базе. Соответственно, чтобы получить "чистый" путь, следует диезы убрать. Если ты не удосужился прочитать моё сообщение, то я его повторю и даже расширю:
Код

var s:string;
...
s:=adotable1.FieldValues['поле1'];
s:=trim(stringreplace(s,'#',' ',[rfReplaceAll]));

На выходе получаем: 
Было: #c:\aaa.txt#
Стало: c:\aaa.txt

Если что снова непонятно, могу объяснить в третий раз. smile 

Автор: Novichek27 16.5.2010, 21:05
К цели приближаюсь.

Я сделал так, чтобы был виден путь:

begin
s:=AdoQuery1.FieldValues['shell'];
s:=trim(stringreplace(s,'#',' ',[rfReplaceAll,rfIgnoreCase]));
Label3.caption := s;
end;

В Label3 отображается текст:  C:\data\pic1\fff.txt pic1\fff.txt а не C:\data\pic1\fff.txt что опять-таки мешает.

Как это исправить?

Автор: Данкинг 16.5.2010, 21:27
Меняем процедурку:
Код

var s,s_new:string;
i:integer;
begin
 s_new:=''; 
 s:=AdoQuery1.FieldValues['shell'];
  for i:=2 to length(s) do
   if s[i]<>'#' then s_new:=s_new+s[i] else break;
Label3.caption := s_new;
end;

Автор: Novichek27 16.5.2010, 21:52
Красавчик  : smile  smile  smile 

ВСЕ работает так как я хотел, и ты помог мне в этом Данкинг

Огромное СПАСИБО!!!




"Мало знать, куда ведет дорога, ее еще нужно пройти".
                                                            
                                                                              Морфей

Автор: Данкинг 16.5.2010, 22:24
На здоровье... smile 

Автор: Novichek27 29.5.2010, 17:58
Данкинг здравствуй! 

Подскажи пожалуйста как создать гиперссылку в поле таблицы Access программно в Delphi?

Заранее спасибо!

Автор: Данкинг 29.5.2010, 19:38
Дык, надо искать, как типа поля "гиперссылка" обозначается в Access, и затем такое поле уже создавать. smile 

Автор: Novichek27 23.9.2010, 20:18
Нет, поле то уже есть. Нужно создать в нем гиперссылку программно. smile  

Автор: Данкинг 23.9.2010, 20:46
Цитата(Novichek27 @  23.9.2010,  21:18 Найти цитируемый пост)
Нужно создать в нем гиперссылку программно.

Не знаю, а если обычным образом вставить данные в поле?

Автор: Novichek27 23.9.2010, 21:53
а если обычным образом вставить данные в поле? 

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

Ссылку щас скину...

Добавлено через 8 минут и 40 секунд
не могу найти теперь, надо было сохранить. 
Но точно здесь она, т.е. на форуме есть, что-то связано с отсканированным документом путь которого надо заносить в базу.

Автор: Данкинг 23.9.2010, 22:28
Цитата(Novichek27 @  23.9.2010,  22:53 Найти цитируемый пост)
что-то связано с отсканированным документом путь которого надо заносить в базу. 

Связи не понял. smile 

Автор: Novichek27 24.9.2010, 20:20
Цитата
Связи не понял. smile 


Я имею ввиду что там была такая же задача. Создать гиперссылку в поле таблицы MS Access.

Автор: bems 25.9.2010, 00:43
Данкинг, # -допустимый символ в имени файла, так что негоже удалять все подряд

Автор: Данкинг 25.9.2010, 02:15
Цитата(bems @ 25.9.2010,  01:43)
Данкинг, # -допустимый символ в имени файла, так что негоже удалять все подряд

Ну ты вспомнил, что 4 месяца назад обсуждали. smile Собственно, понятно, что можно удалить только крайние символы, но вроде как этот вопрос уже решён. smile 

Автор: bems 25.9.2010, 03:01
ну последнее сообщение в теме было вчера, вот я и прочитал топик сначала. И да, 
Модератор: один топик - один вопрос

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)