前言:
兵哥才开始学VB6.0,此前用了3年实际学习程序。
一步步,从EXCEL表格公式->EXCEL-VBA程序->ACCESS-VBA程序->MS_SQL+ACCESS-VBA程序。
目前,已经有多个小软件在单位上实际运行。主要有:工作计划、日志管理、物件管理、财务管理。
都是基于后台MS-SQL服务器+前台ACCESS程序。升级到VB6.0程序的原因,我一直对程序必须依托OFFICE2003软件,耿耿于怀。
由于,OFFICE2003逐渐在被淘汰,后面的OFFICE2007架构差别太大。在OFFICE2007上,我的软件基本要重写。
所以干脆踢开OFFICE,用VB来写。
本来考虑用VB2010,但是感觉与VBA的语法差别太大了!
只好暂时先用VB6.0,至少很多代码可以直接复制。软件架构:
嗯!直接山寨我们单位的一个软件!
1、后台数据使用SQL服务器存储。
2、前台一个主窗口,各个功能模块的窗体显示在其中,可以自由打开、切换、关闭。
3、各种功能模块,准备做成DLL,实时从服务器上下载运行。
步骤:
1、主程序-功能:
A、连接SQL服务器。完成
B、读取本地配置文件内容。完成。
C、登录窗,读取用户列表、验证权限、验证密码。完成
D、程序图标问题。 研究中...
E、主窗口 计划中...
兵哥才开始学VB6.0,此前用了3年实际学习程序。
一步步,从EXCEL表格公式->EXCEL-VBA程序->ACCESS-VBA程序->MS_SQL+ACCESS-VBA程序。
目前,已经有多个小软件在单位上实际运行。主要有:工作计划、日志管理、物件管理、财务管理。
都是基于后台MS-SQL服务器+前台ACCESS程序。升级到VB6.0程序的原因,我一直对程序必须依托OFFICE2003软件,耿耿于怀。
由于,OFFICE2003逐渐在被淘汰,后面的OFFICE2007架构差别太大。在OFFICE2007上,我的软件基本要重写。
所以干脆踢开OFFICE,用VB来写。
本来考虑用VB2010,但是感觉与VBA的语法差别太大了!
只好暂时先用VB6.0,至少很多代码可以直接复制。软件架构:
嗯!直接山寨我们单位的一个软件!
1、后台数据使用SQL服务器存储。
2、前台一个主窗口,各个功能模块的窗体显示在其中,可以自由打开、切换、关闭。
3、各种功能模块,准备做成DLL,实时从服务器上下载运行。
步骤:
1、主程序-功能:
A、连接SQL服务器。完成
B、读取本地配置文件内容。完成。
C、登录窗,读取用户列表、验证权限、验证密码。完成
D、程序图标问题。 研究中...
E、主窗口 计划中...
因为考虑到,服务器上的DLL文件可能随时被升级,每次打开的时候都能实时使用最新的版本。
添加了菜单、状态栏。 给状态栏 加了个进度条!。
发现有个问题,如果 是MDI窗口,进度条竟然不能设置长度,如果移动到状态栏上,会把整个状态栏盖掉!
MDIForm
我建议还是本地下好dll调用
服务器做一个版本控制
本地从服务器读取版本
版本有变化再去下载新文件
这样相对好控制得多
1、将主程序和插件程序都做成EXE。
2、主程序根据需要运行插件程序,并窗体将其抓取到自己的窗体中作为子窗体。难点:
1、避免插件的重复运行。
2、主程序与子程序间通讯,调用及传递结果。求指点!
嗯! 由于局域网中,带宽、存储空间,什么的都不是问题。
运行时直接下载EXE文件,完全不影响。
嗯! 由于局域网中,带宽、存储空间,什么的都不是问题。
运行时直接下载EXE文件,完全不影响。
楼主好厉害求带。我也是excel公式转access转sql 真是缘分
嗯! 由于局域网中,带宽、存储空间,什么的都不是问题。
运行时直接下载EXE文件,完全不影响。
楼主好厉害求带。我也是excel公式转access转sql 真是缘分共同学习 共同进步!
嗯! 由于局域网中,带宽、存储空间,什么的都不是问题。
运行时直接下载EXE文件,完全不影响。
不是带宽和空间什么的问题
是自身编码的简便程度,再没有特殊需求的情况下
还是减少无谓的业务代码比较好些.
化了一天重写了一个读取配置文件的类模块。 弄完了才发现,原来Win早就有读写配置文件的系统函数。
下面是一个范例:
'请於form中放3个TextBox,一个CommandBox
Private Declare FunctionGetPrivateProfileString Lib "kernel32" _
Alias"GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileStringLib "kernel32" _
Alias "WritePrivateProfileStringA" (ByVal lpApplicationName AsString, _
ByVal lpKeyName As Any, ByVal lpString As Any, _
ByVal lpFileName As String) As LongPrivate Sub Command1_Click()
Dim success As Long
success =WritePrivateProfileString("MyApp", "text1", Text1.Text,"c:\aa.ini")
'叁数一 Section Name
'叁数二於.ini中的项目
'叁数三项目的内容
'叁数四 .ini文件的名称
success =WritePrivateProfileString("MyApp", "text2", Text2.Text,"c:\aa.ini")
success = WritePrivateProfileString("MyApp2","text3", Text3.Text, "c:\aa.ini")
End SubPrivate Sub Form_load()
Dim ret As Long
Dim buff As String
buff = String(255, 0)
ret =GetPrivateProfileString("Myapp", "text1","text1", buff, 256, "c:\aa.ini")
'若.ini MyApp中无text1,则采用叁数三的值
Text1.Text = buff
buff = String(255, 0)
ret =GetPrivateProfileString("Myapp", "text2","text2", buff, 256, "c:\aa.ini")
Text2.Text = buff
buff = String(255, 0)
ret =GetPrivateProfileString("Myapp2", "text3","text3", buff, 256, "c:\aa.ini")
Text3.Text = buff
End Sub
2、EXE只负责:下载,启动主DLL。所以功能都在DLL中。EXE只是个下载器和启动器。明白不?
能够同时启动多个子程序,并能通过按键 自由切换、关闭。