1717
Типичные вопросы [интернет]
На этой станице помещены ответы на вопросы, которые я сам мучительно (или легко) находил, я не думаю, что ответы исчерпывающие, и если Вы найдёте, что что-нибудь дисанирует с Вашими представлениями, давайте обсудим и найдём лучшие решения... Кроме того, часто ответ может зависеть от версии как OS так и Visual FoxPro, проверить всё на всех версиях и платформах для меня просто непосильно. Изначально этот список был исключительно для VFP 5.0, в то время как сейчас это только VFP 7.0/8.0, я мог где-нибудь и пропустить упоминание о версии, и если Вы найдёте несоответствия, сообщите пожалуйста мне.

 

Вопрос: Я новичок в VFP 6.0 и меня интересуют возможности по использованию ADO и OLE объектов в Internet, как я могу воспользоваться VFP в ASP? 

Ответ: В ASP Вы можете использовать VFP-COM объекты точно также как и любые другие, подобно: var ob = Server.CreateObject ("VfpOleObject"); Однако я понял так, что Вас интересует использования данных из таблиц VFP базы данных. Это Вы можете делать создавая ADO RecordSet-ы из VFP источников данных: (var oc = Server.CreateObject ("ADODB.Connection"); oc.Open (sVfpODBCConnctStr) и т.д.). Если Вас интересует вопрос создания html-страниц средствами VFP, то VFP имеет большое множество Помощников (Wizards), классов, и FoxIsapi для этих целей. См. также http://www.west-wind.com/ ... и много другого относительно VFP в Internet. Для преобразования ADO RecordSet в VFP cursor Вы можете воспользоваться http://msdn.microsoft.com/vfoxpro/downloads/download.asp?ID=025 См. также http://support.microsoft.com/kb/q197861/, (VFPCOM Utility)http://msdn.microsoft.com/vfoxpro/downloads/updates.asp

Вопрос: В VFP 7.0 появились две функции CursorToXML() & XMLToCursor() используя первую из них я получаю xml-файл для таблицы, однако как бы его посмотреть в IE. 

Ответ: Для того, чтобы отобразить xml-файл в IE, необходимо определить формат отображения данных. Сделать это можно используя css или xls файлы. Попробуйте проделать следующее:
- открыть таблицу HOME(2)+"tastrade\data\setup.dbf"
- из окна команд выполнить: ?CursorToXML("Setup", "myXMLSetup.xml", 1, 8+48+512, 0, "myShmSetup.xsd")
- создав новый файл и записав в него следующий текст:
<?xml version="1.0"?>
<!-- File Name: myXMLSetup.xsl -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<H2>List VFP table Setup</H2>
<xsl:for-each select="VFPData/setup">
<SPAN STYLE="font-style:italic">key_name: </SPAN>
<xsl:value-of select="key_name"/><BR />
<SPAN STYLE="font-style:italic">value: </SPAN>
<xsl:value-of select="value"/><P />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
сохранить его под названием myXMLSetup.xsl
- добавить второй строкой в файл myXMLSetup.xml строку:
<?xml-stylesheet type="text/xsl" href="myXMLSetup.xsl"?>
- наконец можно попробовать открыть файл myXMLSetup.xml из IE.
Другой способ заключается в том, чтобы написать для myXMLSetup.xml css-файл, например:
/* File Name: myXMLSetup.css */

key_name
{display:block;
margin-top:12pt;
font-size:10pt}

value
{display:block;
font-size:12pt;
font-weight:bold;
font-style:italic}
и использовать его вместо xsl показанного выше.
См. также:
- Q253732 HOWTO: Use FoxPro and MSXML to Return Information About an XML Document
- Q191758 Convert FoxPro Cursor into XML Data Format
- Q253713 Move Data From an XML Document into a FoxPro Table
в MSDN.
Нужно также иметь ввиду, что конструкция типа:
<SCRIPT LANGUAGE="JavaScript">
var doc = dsoData.XMLDocument;
...
<XML id="dsoData" src="Data.xml"></XML>
на самом деле в качестве значения переменной doc возвращает объект DOMDocument (т.е. "MSXML.DOMDocument"). Как говориться не верь глазам своим :-)

Вопрос: При попытки использовать VFP 8.0 OLEDB Provider из-под MS IIS 6.0 (OS Windows 2003 Server) получаю: System.Data.OleDb.OleDbException: No error information available: REGDB_E_CLASSNOTREG(0x80040154). Если создать обычное Windows-приложение (например на C# с доступом через System.Data.OleDb), то всё работает без вопросов. Есть ли способ борьбы с этим? 

Ответ: Мне известны несколько вариантов преодоления проблемы:
1) вместо VFP 8.0 OLEDB Provider использовать VFP OLEDB Provider для версии 7.0
2) в файле machine.config в секции processmodel подменить UserName с MACHINE на SYSTEM
3) Удалите VFP 8.0 OLEDB Provider версии 8.0.0.3006, и установите именно версию 8.0.0.3117 (SP1VFP8) или выше, взяв её с http://msdn.microsoft.com/vfoxpro/downloads/updates/default.aspx Обратите внимание, что для корректной регистрации OLE-компоненты вам нужны права именно локального администратора сервера (НЕ сетевого или контроллера домена администратора, а именно локального админа).
По моим представления, второй вариант не следует пытаться использовать из-за соображений безопасности.

Вопрос: Как программно из-под VFP скачать файл с internet-ресурса, имея его адрес? 

Ответ: У VFP непосредственно такой встроенной возможности нет, однако:
- во-первых, из-под VFP можно вызывать Win32API-функции
- во-вторых, в VFP можно использовать ActiveX компоненты, специализированные под подобные действия

Относительно во-первых:
Имеется по крайней мере два набора функций: MS WinSock и MS WinInet (см. в MSDN), использование первого затруднено из-за необходимости передавать структуры через параметры (по этому поводу можно поискать struct.zip by Christof Lange в internet), тогда как второе достаточно легко, см. например: на ftp://ftp.prolib.de/ tools/archive/internettools/ vfphttp.PRG, ftp_test.prg, ftp.PRG См. также статью MSDN - [Q174524] "HOWTO: How To Retrieve and Insert HTML Into Memo Field".
... относительно какого-нить примера с MS WinSock - ну например на http://vfpdev.narod.ru/util_r.html - getip.zip (1,69KB) - класс для получения IP адреса по любому имени хоста, с использованием Windows Sockets 2 API

Относительно во-вторых:
от MS мне известно два компонента в этом направлении: MsWinSck.ocx, MsInet.ocx
См. примеры в MSDN Knowledge Base:
- [Q311306] HOWTO: Use Visual FoxPro to Download a Web Page from the Internet
- [Q315124] SAMPLE: Use the Winsock ActiveX Control with Visual FoxPro
См. также примеры на http://vfpdev.narod.ru/util_r.html
- smtp.zip (20,8KB) - пример демонстрирует посылку сообщения через SMTP протокол, используя MS WinSock control.
- tcpSock.zip (12,5KB) - пример клиента и сервера с использованием MS Winsock control (MsWinSck.ocx) VFP6.0+SP3(VS6)/VFP7.0(SP1VFP7)
- srvwinsk.zip (100KB) - пример приложений клиента и сервера с использованием MS Winsock control (MsWinSck.ocx) VFP 8.0/VFP 9.0
Как дополнение, там же можно посмотреть: - wsDmur.zip (49,5KB)
 
 
Hosted by uCoz