:: Не фоксом единым
Re: memo поле из файла в MS SQL Server
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, PaulWist!

А чего там такого особого обрабатывать нужно то?
Для такого простого случая банального COMRETURNERROR(tcMethod, MESSAGE()) в
Error Event класса должнго быть более чем достаточно. Переложим значится
обработку на плечи клиента




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14614
Дата регистрации: 01.04.2004
2Igor Korolyov

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




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Pavel1977
Автор
Создаю объек фокса так
Exec @er=dbo.sp_OACreate 'VisualFoxPro.Application',@oNew OUT

Но как получить доступ из этого объекта к таблице на сервере?
Или может наоборот создать в объекте курсор и добавить в него файл:

Exec @er=dbo.sp_OAMethod @oNew,DoCMD,NULL,'create cursor vrem (f1 m)'
Exec @er=dbo.sp_OAMethod @oNew,DoCMD,NULL,'Append Blank'
Exec @er=dbo.sp_OAMethod @oNew,DoCMD,NULL,'Append memo f1 from "c:\1.txt"'

Но как из этого курсора добавить добавить в таблицу на сервере?

Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14614
Дата регистрации: 01.04.2004
2Pavel1977

Ну ты даешь, у меня и в мыслях такого подхода не было. Во теперь образовалось четвертое решение.

Давай его рассмотрим, хотя всё основное ты уже и сам сделал, те коннектимся к серверу и добавляем файл в BLOB

Exec @er=dbo.sp_OAMethod @oNew,DoCMD,NULL,'SQLCONNECT()'
Exec @er=dbo.sp_OAMethod @oNew,DoCMD,NULL,'SQLEXEC(hnd,"Insert into table (MyBLOB) values(?vrem.f1)")'

Мне казалось , более простое решение
Есть наш ЕХЕ на фоксе (но который лежит на сервере), в котором прописаны все действия те
- SQLCONNECT()
- CREATE CURSOR
- APPEND MEMO
- SQLEXEC()
и далее по xp_cmdshell запускаем наш ехе-шник с параметрами, который и заливает файл, получаем статус выполнения ехе-шника и вытягиваем на клиента BLOB поле.
Тоже самое м. сделать через OLEPUBLIC класс.




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
oleg_km

Сообщений: 487
Откуда: СПб
Дата регистрации: 02.12.2002
Вопрос, нужны ли такие извраты, вот пример:

Сервер:

DEFINE CLASS cQueDOC AS Custom OLEPUBLIC
FUNCTION GetDocFile
LPARAMETERS cFile
*: Проверка наличия файла и доступа
DECLARE INTEGER CoImpersonateClient IN ole32.dll
DECLARE INTEGER CoRevertToSelf IN ole32.dll
CoImpersonateClient()
LOCAL nHandle
nHandle = FOPEN(cFile)
CoRevertToSelf()
IF nHandle = -1
RETURN ''
ENDIF
FCLOSE(nHandle)
*: Сам файл
RETURN FILETOSTR(cFile)
ENDFUNC
ENDDEFINE
Клиент:

oFile = CREATEOBJECT('CQueDOC')
cStr = oFile.GetDocFile(cFile)
IF !EMPTY(cStr)
STRTOFILE(cStr, cFile)
ENDIF

Может такой вариант устроит или все-таки нужно, чтобы тоже самое сделалось через SQL



[i][small][color=Gray]Отредактировано (16.11.04 13:25)


------------------
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14614
Дата регистрации: 01.04.2004
2oleg_km

Так понимаю, что 2Pavel1977 еще и сам не определился.

Маленькая не принципиальная ошибочка.

DEFINE CLASS cQueDOC AS Custom OLEPUBLIC
FUNCTION GetDocFile

oFile = CREATEOBJECT('CQueDOC')
cStr = oFile.GetFileDoc(cFile)




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, PaulWist!

Дык это должен уже клиент решать - ему файл отдан, он его и разбирает...
Конечно если разбор идёт на сервере - то там должна быть своя система отлова
ошибок - ну или "предупредительная" система - типа размер < 100 -
COMRETURNERROR(PROGRAM(), "Файл поврёждён")...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, oleg_km!

Хм. Как-то странно выглядит система - сначала открываем файл в контексте
пользователя, и лишь потом, уже вернувшись в контекст самого серверного
процесса мы его читаем - не вызовет ли это проблем с правами? Неужели после
FOPEN+FCLOSE доступ к файлу сохранится с теми-же правами?
Могут лучше убрать CoRevertToSelf() от греха подальше? Тем более что
согласно MSDN это происходит автоматически по завершению метода?




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
oleg_km

Сообщений: 487
Откуда: СПб
Дата регистрации: 02.12.2002
Замысел был такой - сделать универсальную проверку и начичия самого файла и прав на него и избежать исключения (которое бы возникло, если FILETOSTR вызвать в контексте пользователя, у которого нет прав на открываемый файл). Само же чтение после проверки производится с правами сервера, которые предполагаются как у администратора.

Просто столкнулся со следующими вполне объяснимыми вещами, используя DCOM. На сервере, котором он работает, сильно ограничены права пользователей, вплоть до того, что по умолчанию все файлы имеют права только для администраторов (кроме естественно шар), и как результат, DCOM в контексте пользователя не может даже DLL подцепись. Может нужно сменить права на более мягкие (дать пользователям хотя-бы Read), но мы решили ничего не менять, а я для себя выработал правило - в DCOM'е только необходимые операции выполняются в контексте пользователя, а все остальные - в режиме администратора



[i][small][color=Gray]Отредактировано (16.11.04 15:42)


------------------
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Pavel1977
Автор
Получилось, но криво как-то получатется что с сервера запускается программа, которая с ним же соединятся.

Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Pavel1977
Автор
Это интересно!
Не могли вы мне ссылочку, где можно почитать про функции из ole32, что бы хоть примерно понять, что сдесь делается!

Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
oleg_km

Сообщений: 487
Откуда: СПб
Дата регистрации: 02.12.2002
Не совсем понял, про что ссылочку
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, oleg_km!

А, так значит оно так и задумано А то я уж стал волноваться, что чего-то
не понимаю Ну теперь понятно... В принципе сегодня делать DCOM IMHO не
стоит - гораздо проще сделать через COM+ - там и с правами как-то
попонятнее, и вообще простора для манёвра поболе будет Тока я бы на
всякий случай файл для передачи заворачивал в BASE64 (благо все средства уже
имеются в VFP7 и старше - одна доп. функция ) - для COM оно вроде без
разницы, а вот ежели потом вокруг этого COM-а соорудить WebService - очень
даже пригодится...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Pavel1977!

Цитата:
где можно почитать про функции из ole32
Как обычно - в MSDN.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Pavel1977
Автор
Где есть описание функций CoImpersonateClient() и CoRevertToSelf(). Желательно на русском.
с фоксом такая информация не поставляется. Я нашел в справке для Delph (MS SDK), но там про эти функции ничего нет.

Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
PaulWist

Сообщений: 14614
Дата регистрации: 01.04.2004
См здесь.
msdn.microsoft.com




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
oleg_km

Сообщений: 487
Откуда: СПб
Дата регистрации: 02.12.2002
Я узнал из [url]www.rsdn.ru/article/com/comsec.xml[/url]
Ratings: 0 negative/0 positive
Re: memo поле из файла в MS SQL Server
Pavel1977
Автор
Спасибо

Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2024 Fox Club 
Яндекс.Метрика