MyGForge -hpos客户端 - Wiki http://gforge.retailsolution.cn/gf/ Gforge Advanced Server RSS 门店内多台电脑连接同一个客户端数据库实现商 云方说明 [门店内多台电脑连接同一个客户端数据库实现] 于此.

答:门店系统使用MSDE数据库,可支持5个客户端连接;

当一个门店中需要设置多个客户端时,只有一台电脑需要注册(注册会生成该门店数据库);其他电脑无需注册(也即不需要生成数据库),只需要在POS客户端安装后更改 connection.ini 文件使得IP地址指向已经注册的门店数据库电脑即可。

比如:

我有两台电脑, IP地址分别为 192.168.15.70  和 192.168.15.72

其中:192.168.15.72 是注册客户端(也即是门店的数据库服务器),所以该电脑的数据库连接指向local;

            192.168.15.70 是非注册客户端, 该电脑的数据库连接指向 192.168.15.72 

 

图1:192.168.15.72 的配置和运行情况:

 

192.168.15.70 的配置和运行情况:

]]>
HposClient--CS版(Delphi)开发FAQ商 云方说明 [HposClient--CS版(Delphi)开发FAQ] 于此.

目录

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

001、开发环境要如何配置?

002、如何调试DLL?

003、在线库存查询的SQL语句在那里写?

004、在 新数据通讯->在线库存管理->本地门店库存下载 点"在线下载"按钮时会导致系统崩溃,可能是什么原因?

005、门店终端的店铺铺货收货查询的SQL是怎门拼出来的?

006、POS终端是如何与Sqlserver数据库联接的?

007、POS终端是如何加载菜单的?菜单如何被响应?

008、POS终端的每个Form是否有统一的入口函数?

009、POS终端控制外设用到了哪些设备相关的DLL或者Ocx ?

010、POS终端用到那些额外的非设备相关的DLL或者OCX?

011、注册门店时自动生成数据库的代码在哪里?

012、我使用readln 和 writeln 拼接多个文本文件后发现有一段的中文是乱码,且英文每个字母之间多了个点,如何解决?

013、为什么门店注册成功后,虽然可以选择到商场,但专柜名称的下拉列表框中依然是空的?

041、[客户端自动更新]是如何设计的?

042、[门店内多台电脑连接同一个客户端数据库实现]是如何设置的?

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

001、开发环境要如何配置?

答:

1、安装Delphi (打补丁到Sp2) , 安装Sqlserver MSDE版数据库(导入POS1数据库)

1.2 安装 TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi

      从本站的svn库把代码Checkout

2、安装第三方组件包括(比如,假设这些组件存放于 D:\Delphi_Controls 目录下):

      这些控件都可以通过网上搜索到,也可在本站的文件->Delphi控件处下载.

      [VclZip.pro.v3.10.1]
      [indy10]
      [CoolTrayIcon]      
      [EmbededWB_D2005]
      [interface]
      [SQL_Backup]
      [ThirdCompent]
                              AAFont
                              [Ehlib_4.1.4]
                              [FastReport 2.5]
      [ZipTV4]

      [Cipher78 Demo Delphi]

3、在Delphi 6 IDE的 Tools->Enviroment Options->Library ->Library Path 下添加如下路径:

D:\Delphi_Controls\CoolTrayIcon\Source;
D:\Delphi_Controls\EmbeddedWB_D2005\Source;
D:\Delphi_Controls\indy10.0.52_source\System;
D:\Delphi_Controls\indy10.0.52_source\Core;
D:\Delphi_Controls\indy10.0.52_source\Protocols;
D:\Delphi_Controls\interface\Source;
D:\Delphi_Controls\SQL_BackUp\Source;
D:\Delphi_Controls\ZipTV4\Source;
D:\Delphi_Controls\VclZip.pro.v3.10.1;
D:\Delphi_Controls\ThirdComponent\AAFont\Source;
D:\Delphi_Controls\ThirdComponent\EhLib_4.1.4\Common;
D:\Delphi_Controls\ThirdComponent\FastReport 2.5\source;
D:\Delphi_Controls\Cipher78 Demo Delphi;

 

添加时,放在单独的一行上,拷贝进去:

D:\Delphi_Controls\CoolTrayIcon\Source;D:\Delphi_Controls\EmbeddedWB_D2005\Source;D:\Delphi_Controls\indy10.0.52_source\System;D:\Delphi_Controls\indy10.0.52_source\Core;D:\Delphi_Controls\indy10.0.52_source\Protocols;D:\Delphi_Controls\interface\Source;D:\Delphi_Controls\SQL_BackUp\Source;D:\Delphi_Controls\ZipTV4\Source;D:\Delphi_Controls\VclZip.pro.v3.10.1;D:\Delphi_Controls\ThirdComponent\AAFont\Source;D:\Delphi_Controls\ThirdComponent\EhLib_4.1.4\Common;D:\Delphi_Controls\ThirdComponent\FastReport 2.5\source;

另外, svn上下下来的txcommon 和 PublicCode 是共用模块,也需要放到lib路径中:

比如:  D:\hposclient\trunk\delphi\txcommon;D:\hposclient\trunk\delphi\PublicCode

 

002、如何调试DLL

答:对于DLL工程,在Delphi IDE 的Run->Parameters->Host Application 中输入主程序的路径,比如:C:\HposClient\output\Ppossys.exe

 

003、在线库存查询的SQL语句在那里写?

答:在线库存查询调用的都是jsp文件,查询的SQL语句是写在通讯服务器端的,详情可参考:http://gforge.retailsolution.cn:81/gf/project/hposcomm/wiki/?&pageid=62 

 

004、在 新数据通讯->在线库存管理->本地门店库存下载 点"在线下载"按钮时会导致系统崩溃,可能是什么原因?

答:此按钮会调用通讯服务端的 wwwroot/hpos/onlinedownload.do->commOnlineDownloadServlet.java ( 通过在Delphi中F7跟踪可以知道此按钮调用了onlinedownload.do, 另外请参考wwwroot\hpos\WEB-INF\web.xml配置 得到处理onlinedownload.do的Serverlet class) ,如果java程序出错(比如 emitpdtoptstgdeskaccountga 表不存在)则会导致此问题,Delphi 端的例外捕获解决不了崩溃问题。

 

005、门店终端的店铺铺货收货查询的SQL是怎门拼出来的?

答: 是从PosDoubleTBQuery 和Possysparams 表拼出来的。

 

006、POS终端是如何与Sqlserver数据库联接的?

答:1、主界面启动时,创建了应用级的临时数据集:Globalvar,并从connection.ini中读取主要连接参数,但这些参数中没有具体的Pos1或针Pos2数据库。

2、当用户点[选择商场] 按钮后,系统从RegisterCompanyInfo.xml读取数据到Datagrid 控件,RegisterCompanyInfo.xml中Rowdata. DataPath是记录具体的数据库的(比如Pos1或者Pos2)

3、当用户选择了某个具体门店后,系统获取DataPath的值,并赋值给Globalvar.Datasource ,组成一个完整的数据库联接字符串:Globalvar. AdoConStr

4、系统的每个Form都是用了Globalvar. 从中可以获取数据库联接字符串。这样每个Form就可以访问数据库了。

 

007、POS终端是如何加载菜单的?菜单如何被响应?

答:1、主界面启动时,在选择具体的门店前,菜单是从Menus.xml(此文件可以使用[PXMLEDit.exe] 打开编辑)中加载的,当选择门店,并登陆营业员后,菜单是从数据库的posmenu表中加载的。值得注意的是如果想添加菜单,则菜单ID 还必须在accountspopedomst表中存在。菜单加载相关的逻辑在menudataclass.pas中。
 

2、菜单的响应逻辑在uiclass.MenuOnClick()中

 

008、POS终端的每个Form是否有统一的入口函数?

答:是的,每个Form 的统一入口函数是:LoadChildForm ; 大部分Form初始化工作均在此过程完成,比如登陆人员,门店,数据库连接等等。比如销售界面的数据库连接就是在初始化后存放于DataModule1.database1 中。初始化过程中会调用函数遍历当前Form 上的所有AdoQuery 组件,给每个AdoQuery组件赋于连接字符串。

销售界面的销售明细使用了一个Datagrid , 我们能找到的关系是这样的:

1、 Datagrid 同时设置了Datasource 和Dataset属性。从属性上看,从Dataset方向看,看不出与数据库联接有何联系,从Datasource 方向看,也看不出与数据库联接有何联系。那么到底在哪里给出联系了呢?从代码中找所有涉及cdsitem和dscItem也未找到与数据库联接有关的地方。
 

 

009、POS终端控制外设用到了哪些设备相关的DLL或者Ocx ?

答:[API_COM.DLL]、[MULTIDLL.DLL]、[Cipher78.ocx]、[IrLib.dll]

 

010、POS终端用到那些额外的非设备相关的DLL或者OCX?

答:[qtintf.dll] 、[wp.dll]

 

011、注册门店时自动生成数据库的代码在哪里?

答:在pseldatabase.dll里面

 

012、我使用readln 和 writeln 拼接多个文本文件后发现有一段的中文是乱码,且英文每个字母之间多了个点,如何解决?

答:这是因为字符集和格式问题导致的,可以这么解决:先用ultraEdit打开有问题的文件,在16进制下可看到确实在每个英文字符之间有"."; 另存一下,注意选择:Line Terminator:Dos Terminators-CR/LF; Format:UTF-8-NO BOM; 然后使用GB2UTF8.exe 出问题的文本文件从utf8 转成GB. 转完后用ultraedit打开中文可能还是乱码,没关系,用ultraEdit打开没有转之前的备份,把内容拷贝到新的GB编码的文件中,然后再保存即可。

 

013、为什么门店注册成功后,虽然可以选择到商场,但专柜名称的下拉列表框中依然是空的?

答:门店注册成功后,门店的信息被写入到usercenter表中,但并没有被写到shoppedossier表中,而专柜名称的下拉列表框中的内容是从shoppedossier表中获取的,你需要通过通讯把后台的shoppedossier信息同步过来。

]]>
客户端自动更新商 云方说明 [客户端自动更新] 于此.

基本业务需求:

门店终端POS系统,因为业务量的扩大,以及业务范围的扩充,需要不断在现有POS终端系统进行升级处理,为了使门店POS终端的使用者,使用方便,所以升级系统需要快捷方便,易于操作。

服务端操作:

1、根据客户需求对源代码进行部分或者全代码更新,编译,发布。
2、对更新部分生成UPDATE的xml文件,并对于相应的文件进行打包压缩,假如有数据库部分的更新的话,在打文件压缩包的时候,还需要对SQL部分进行编写,以及生成执行SQL的批处理(bat)文件。
3、把所有需要更新的文件置于Web发布目录下面


 

客户端自动更新程序逻辑:

1、建立升级主面板,在面板上放置升级目录地址栏,地址为服务器升级Web目录地址。
2、升级系统运行的时候,先找到系统apppath下面的posupdate.txt文件,提取version和update date,和系统升级目录下的posupdate.txt文件里的同属性进行判断。
3、假如判断系统目前的版本号低于升级版本号的话,则开始运行服务器posupdate.txt文件涉及的升级包,否则就提示无升级版本,假如在apppath下面没有旧的posupdate.txt文件,则系统直接根据服务器端posupdate.txt进行升级。
4、对于需要升级的系统,系统根据下载下来的posupdate.txt文件进行更新文件包的下载。
5、下载完成之后,通过客户端放置的UNZIP组件,进行对压缩文件进行解压,并寻找相对应的目录安放,对于已经存在的文件,进行覆盖,更新,通过运行下载下来的bat文件来调用运行PUpdateExe.exe,这个服务器端的文件,对于数据库文件进行的升级,在本机执行下载下的的SQL文件,进行数据库的更新。
6、更新完成之后,修改系统版本号,版本号为升级posupdate.txt文件生成。
 

]]>
FrontPage商 云方
 

======================================================
Delphi 资源:
======================================================

http://www.delphifans.com/

 

======================================================
[HposClient--CS版(Delphi)开发FAQ]

[HposClient--CS版(Delphi)表结构]
======================================================

 001、目前有哪些已知的问题?

 

 

 

]]>
Cipher78 Demo Delphi商 云方说明 [Cipher78 Demo Delphi] 于此.

这是一个数据控件,用于POS软件通过串口与外设交换数据. 它的执行体是: Cipher78.ocx , 被delphi调用的接口是: CIPHER78Lib_TLB.dcu

]]>