设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 43100|回复: 116

[Access本身] 记录企业erp软件编写点滴

[复制链接]
发表于 2013-8-15 13:01:08 | 显示全部楼层 |阅读模式
已经是三次见面了。企业的负责人还是那些话:价格太高了吧?
  我说:这个不是钱的问题。一个是你需要不需要的问题,如果你需要,花这点钱算什么?要是你不需要,一分钱都花瞎了。


  其实我没有要什么钱。我不是卖软件的。软件是我自己编写的,钱多钱少无所谓。只要企业愿意使用,而且是真心的使用,我就拿个工资就行了。可就这点钱,企业也不愿意出。那他们一定不是真心的要做这个erp系统了。


评分

参与人数 4经验 +47 收起 理由
roych + 12 (其它)优秀教程、原创内容、以资鼓励、其.
nxjswt + 15 很给力!
todaynew + 10 神马都是浮云
5988143 + 10 非常不错的创作经验及分享心得~期待着你更.

查看全部评分

 楼主| 发表于 2013-8-15 13:15:15 | 显示全部楼层
本帖最后由 yzt880 于 2013-8-15 13:18 编辑

经过多少次的实际使用实验,许多的连接方式中,我觉得只有这个连接最好,可以通过互联网直接连接sql数据库。
strSQL = "rovider=SQLOLEDB;Server=" & fwq1 & ";User ID=" & uid1 & "assword=" & pwd1 & ";Database=" & sjk1 & ";"
就是这个。不用时关闭连接。
Public Sub DisCnn1()
'*purpose: disconnect local sqlserver
'*NOTE:   在这里数据断开连接
On Error GoTo MYERR
   adoCon.Close

MYEXIT:
   Exit Sub
MYERR:
   GoTo MYEXIT
End Sub

回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2013-8-15 13:01:45 | 显示全部楼层
本帖最后由 yzt880 于 2013-8-15 13:40 编辑

成交了。还是那句话,不是钱的问题。
  两个月了,我写的外销报价--合同部分企业已经开始使用。开始他们不断地提出意见。我尽量的满足他们的要求,合作还是愉快的。
由开始的怀疑不信任抵触,变得信任和友好了。
 楼主| 发表于 2013-8-15 13:02:37 | 显示全部楼层
这个erp系统是一个外销机械加工企业使用的。在编写过程中有很多是技术问题,至于和企业使用人员以及老板的沟通也是很重要的。
  就说今天这个问题吧。这个问题是技术问题,我自己发现的。
  就是在家使用vpn连接企业的的sql数据库的时候第一次连接老是连接不上。其实这个企业的使用者是不知道的,但是我却知道这个问题。做程序的,就是要完美的。
  我通过网络查询,有几篇文章涉及到这个问题,但是我看到其中一篇文章最有价值。
  这个文章是这样的:
  SQL Server Full text第一次使用会timeout的问题
  2012-04-20 13:05:56     我来说两句       收藏     我要投稿
  
  SQLServer Full text第一次使用会timeout的问题
  
  最近遇到一个比较奇怪的问题,为了提升一个Search Function的性能,为此建立了全文索引,然后用Contains语句来降低查询时间。   
  SELECT * FROM  TABLE_A WHERE CONTAINS(Field1,'ABC|DFD|FD')
  使用Contains查询确实比较很快。不过问题是每过约20分钟左右的时间;再次使用contains查询会很慢,甚至会超时,第2次,第3次..则又非常快。如此的重复着。 开始的时候我怀疑是因为SQLServer的 Data Cache问题,所以用WITH Recomplie Option等方式去解决不使用Cache的,但仍然没有任何效果,问题还是继续出现。且这个问题只是出现在某一个环境下。
  
  最后证实问题的罪魁祸首是一个SQLServer的一个配置(VerifySignature). 唯独在这个环境中VerifySignature属性被设为了1,其他的环境都是0.
  
  查询配置的语句:
  SELECT fulltextserviceproperty('VerifySignature')
  当VerifySignature被设置成1时。
  
  当第一次query的时候,SQLServer 会尝试连到Internet 上 验证word breaker证书. 接下来的第二次则不会再去验证。
  
  验证需要花一些时间,尤其当SQLServer没有网络连接的时候。
  
  如果在5分钟里并没有其他的Full text search被行的话, the word breaker会被Unload掉,然后再次执行证书验证。这就是为什么我会遇到这样奇怪的问题.
  
  解决办法:
  
  sp_fulltext_service 'verify_signature',0;


 我在企业的sql2005中运行查询  sp_fulltext_service 'verify_signature',0  这个是全文索引
  解决了问题。心情很舒畅的。学无止境。我相信一句话:只有想不到,没有做不到。
 楼主| 发表于 2013-8-15 13:04:16 | 显示全部楼层
本帖最后由 yzt880 于 2013-8-15 14:33 编辑

跟企业的人熟悉点了,他们告诉我,在我之前已经有三批做程序的人在这个企业做过程序。但是都没有完成任务离开了。据说还有水平挺高的。
  企业的要求有时候是很无理的,但是他们的管理就是这样。没有两家企业的管理是一样的,就像没有两片树叶是一样的。
  为什么我们经常听说的是:一个企业不上erp是死,上去erp也是死。原因就是每个企业有每个企业的独特需要。标准的erp软件是满足不了他们的需求的。如果没有人蹲在企业,为企业定制erp系统,自然他们上去的这个标准的erp系统就是死的了。

点评

深表赞同  发表于 2014-1-21 09:34
 楼主| 发表于 2013-8-15 13:04:49 | 显示全部楼层
本帖最后由 yzt880 于 2013-8-15 13:17 编辑

记得才开始见面的时候老板问:你们来几个人?
  我说:就我自己。
  老板吃惊地,有点不相信的说:就你自己?
  我说:是的。人多了没有用的。
  我就自己做软件。从企业调研,沟通,制定方案,找出控制点,编写程序,假设服务器,vpn,sql数据库,数据同步,我一个人足以。
  数据同步过程中,标识不能够自动分配了就要重新调整标识范围,今天就遇到了这个问题,在另一个企业的sql数据库。
  Transact-SQL 参考
  sp_adjustpublisheridentityrange
  
  调整发布上的标识范围,并基于发布上的阈值重新分配新的范围。此存储过程在发布服务器的发布数据库上执行。
  
  语法
  
  sp_adjustpublisheridentityrange [ @publication = ] 'publication'
  [ @table_name = ] 'table_name'
  [ @table_owner= ] 'table_owner'
  删除表中的check约束

  给企业做了vpn,便于在家连接sql数据库,也便于以后企业在外人员连接公司的数据库。
  在连接数据库过程中发现一个问题,win7系统拨号VPN可以顺利的连接到数据库,但是xp系统的计算机就连接不过去。
  百思不得其解。
  后来恍然大悟。我用的是使用路由器后的网络,网段和公司的网段一样都是192.168.1.1-255.win7可以自动的添加网关,而xp则不能自动添加。
  解决问题的办法一是改变公司或者我使用的局域网网关
  二是手动给xp添加网关 route add 192.168.1.0 mask 255.255.255.0 公司vpn拨号后分的ip地址

 楼主| 发表于 2013-8-15 13:11:06 | 显示全部楼层
本帖最后由 roych 于 2015-4-9 15:08 编辑

我的软件是使用access窗体。前面的查询和表都不使用。用ado连接后台sql数据库。
这是主要的连接代码,启动的时候先启动起来一个窗体,上面显示连接服务器ip sql数据库 以及登入账号和密码。每一次调用数据连接一次,不不用时关闭。
Option Compare Database
'创建ADO连接数据库对象
Public adoCon As ADODB.Connection
'创建ADO记录集对象

'创建ADO命令对象
Public adoCmd As ADODB.Command
'创建ADO参数对象
Public adoPara As ADODB.Parameter
Public proCon As String
Public Sub ConnectDB()
Dim fwq1 As String
Dim sjk1 As String
Dim uid1 As String
Dim pwd1 As String
fwq1 = Forms![sqlconn]![fwq]
sjk1 = Forms![sqlconn]![sjk]
uid1 = Forms![sqlconn]![did]
pwd1 = Forms![sqlconn]![pwd]
'创建新的ADO连接对象

  Set adoCon = New ADODB.Connection
  strSQL = "Provider=SQLOLEDB;Server=" & fwq1 & ";User ID=" & uid1 & ";Password=" & pwd1 & ";Database=" & sjk1 & ";"
  adoCon.Open strSQL
adoCon.CommandTimeout = 10000

End Sub
 楼主| 发表于 2013-8-15 13:22:24 | 显示全部楼层
'全局变量,这个是通用函数,通过这个打开数据库记录集
Public dDateStart As Date, dDateEnd As Date, strCurAccountNo As String

'通用函数
Public Function Openrs(strSQL As String, rs As ADODB.Recordset)
'按strSql中的SQL语句打开一个ADO记录集。
    '为记录集rs分配空间
    Set rs = New ADODB.Recordset
     Call ConnectDB
    '使用本数据库的连接打开记录集,使用键集游标和乐观锁定方式。
    With rs
        .ActiveConnection = adoCon
        .LockType = adLockPessimistic
        .CursorLocation = adUseClient
        .Open strSQL
    End With
End Function
 楼主| 发表于 2013-8-15 13:26:52 | 显示全部楼层
一次构造好了连接和打开记录集的函数,以后调用就简单了。这个是设置全局变量。
Public rs As ADODB.Recordset, Rs1 As ADODB.Recordset, Rs2 As ADODB.Recordset, Rs3 As ADODB.Recordset, Rs4 As ADODB.Recordset



查询语句是这样的
openrs“select * from 表 where 限制条件”,rs           或rs1,rs2.。。。。。



 楼主| 发表于 2013-8-15 13:36:15 | 显示全部楼层
本帖最后由 yzt880 于 2013-8-15 14:24 编辑

外销企业的对外报价很频繁和重要,是全厂核心。
我开始以为是和医药批发企业的的输入一样,一个品种一个品种的输入,当我做好输入界面给他们使用的时候,才知道这样是不行的。他们需要在excel表进行整理客户询价,然后一次导入程序,而不是一笔一笔的输入。
他们需要的是批量导入。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-16 14:17 , Processed in 0.111594 second(s), 37 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表