| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 984 人关注过本帖
标题:vfp三层架构问题
只看楼主 加入收藏
crecre
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2013-5-17
结帖率:42.11%
收藏
已结贴  问题点数:20 回复次数:4 
vfp三层架构问题
vfp三层架构,遇到一个问题请大家帮忙解答一下
在同一台机器上web和form1运行没有问题,就是将form1放到另一台机器就不能访问web了,ip地址改了,总是说自定义的方法有错.

下面是生成dll的内容
DEFINE CLASS ChangeCustomer AS Session OLEPUBLIC

    DataSession=2       &&私有数据工作期

   

    PROCEDURE Init

        SET MULTILOCKS ON

    ENDPROC

   

    PROCEDURE GetCustomerInfo HelpString "获取客户信息"

        LOCAL oXMLAdapter AS XMLAdapter,oCA AS String,cXML AS String

        oCA=CREATEOBJECT("MyCursorAdapter")    &&建立CursorAdapter对象

        oCA.CursorFill()                            &&按oCA的Alias属性指定的名称生成临时表

        oXMLAdapter=NEWOBJECT("XMLAdapter")   &&建立XMLAdapter

        oXMLAdapter.AddTableSchema(oCA.Alias)      &&加载临时表到XMLAdapter对象

        oXMLAdapter.ToXML("cXML")               &&生成XML字符串

        RELEASE oXMLAdapter,oCA                 &&释放对象实例

        RETURN cXML                            &&返回XML字符串

    ENDPROC



    PROCEDURE UpdateCustomer(cXML AS String) HelpString "更新客户信息"

        LOCAL oXMLAdapter AS XMLAdapter,oCA AS CursorAdapter

        oXMLAdapter=NEWOBJECT("XMLAdapter")     &&建立XMLAdapter

        oXMLAdapter.UTF8Encoded=.F.

        oXMLAdapter.IsDiffGram=.T.

        oXMLAdapter.LoadXML(cXML,.F.)              &&加载XML

               

        oCA=CREATEOBJECT("MyCursorAdapter")

        oXMLAdapter.Tables(1).ChangesToCursor(oCA.Alias) &&还原缓冲表

        oCA.CursorAttach(oCA.Alias)                    &&将还原出的缓冲表与CursorAdapter建立关联

        =TABLEUPDATE(.T.)                          &&发送更新

        RELEASE oXMLAdapter,oCA

    ENDPROC     

   

    PROCEDURE Error(nError AS Integer,cMethod AS String,nLine AS Integer)

        LOCAL cText AS String

        cText=cMethod+" 错误号="+LTRIM(STR(nError,5))+" 行号="+LTRIM(STR(nLine,8))+" "+MESSAGE()

        COMRETURNERROR(cText,_VFP.ServerName)

    ENDPROC

ENDDEFINE     



*!* 建立基于CursorAdapter的子类,用于连接到SQL Server

DEFINE CLASS MyCursorAdapter AS CursorAdapter

    Alias="Customer"

    BreakOnError= .F.

    DataSourceType="ODBC"

    Tables="Customers"

    SendUpdates=.T.

    AllowDelete=.T.

    AllowInsert=.T.

    AllowUpdate=.T.

    UpdateType=1          &&发送更新方式为UPDATE

    WhereType=1           &&Where子句类型为仅由KeyFieldList属性指定的主关键字段组成

    KeyFieldList="CustomerID"

    UpdatableFieldList="CustomerID, CompanyName"

    UpdateNameList="CustomerID Customers.CustomerID, CompanyName

    BufferModeOverride= 5  &&开放式表缓存

    cConnectionString="Driver={SQL Server};Server=localhost;Uid=sa;Pwd=;Database=northwind"



    PROCEDURE Init      &&类实例化时直接建立连接

        This.DataSource=SQLSTRINGCONNECT(This.cConnectionString, .T.)

        This.SelectCmd="SELECT CustomerID, CompanyName FROM Customers"

        This.CursorSchema ="CustomerID C(5), CompanyName C(40)"

    ENDPROC

    FUNCTION Destroy()   &&在释放对象时断开与SQL Server的连接
        SQLDISCONNECT(This.DataSource)
    ENDFUNC   
ENDDEFINE           

下面是表单form1-command1-click事件
oSoapClient=CREATEOBJECT("MSSOAP.SoapClient30")

oSoapClient.MSSoapInit("http://CCB-ZHJ/FoxWebService/ChangeCustomer.WSDL")

cXML=oSoapClient.GetCustomerInfo()    &&获得XML格式的Customers表中的数据

RELEASE oSoapClient



SET MULTILOCKS ON

IF USED("curCustomer")  &&关闭表

    USE IN curCustomer

ENDIF



*!* 将XML转换为临时表

oXMLAdapter=CREATEOBJECT("XMLAdapter")

oXMLAdapter.LoadXML(cXML,.F.)

oXMLAdapter.Tables(1).Alias="curCustomer"

oXMLAdapter.Tables(1).ToCursor()

SELECT curCustomer

=CURSORSETPROP("Buffering",5)



*!* 设置表格

WITH Thisform.Grid1

    .RecordSourceType=1

    .RecordSource="curCustomer"

    .ColumnCount=2

    .Columns(1).Header1.Caption="客户编号"

    .Columns(1).ControlSource="curCustomer.CustomerID"

    .Columns(1).Width=80

    .Columns(2).Header1.Caption="公司名称"

    .Columns(2).ControlSource="

    .Columns(2).Width=200   

ENDWITH

Thisform.Refresh



原文章地址:
http://blog.



它提示GetCustomerInfo()有错,可form1和WEB放在同一台电脑上没有问题,就是将form1放到另一台上就报错
搜索更多相关主题的帖子: web ip地址 
2013-05-17 17:10
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:0 
把客户端与WebService连接、引用方法等的有关代码发上来看看。
最好把Web服务器的  .wsdl 那文件也发上来.
2013-05-17 18:16
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:0 
不要照抄使用代码,那只是为了举例说明问题的。实际使用中有变化的。直接生成 XML字串传输可能好一点。
2013-05-17 23:45
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:20 
客户端连接WebService的URL与在IIS发布DLL所填的 URL 要一致。
如:客户端连接用 IP,而IIS发布DLL所填的是计算机名,这样不行。
2013-05-18 10:08
crecre
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2013-5-17
收藏
得分:0 
回复 4楼 kiff
太谢谢你了!
就是这个原因
2013-05-19 17:50
快速回复:vfp三层架构问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012354 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved