前言:
兵哥才开始学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、主窗口 计划中...

解决方案 »

  1.   

    请教各位老师,EXE程序能否在运行时对同一个DLL文件:下载到本地、调用运行、退出关闭、删除DLL文件?嗯! 我准备在终端,只存在一个主程序EXE文件、一个CFG配置文件。终端不保存DLL文件,需要时从服务器上下载,运行完成后删除。
    因为考虑到,服务器上的DLL文件可能随时被升级,每次打开的时候都能实时使用最新的版本。
      

  2.   

    可以,但是需要对DLL动态加载,好象实现起来有点难度
      

  3.   

    这个就是典型的插件架构,增加功能只需要下载DLL模块即可,不需要的功能也可以动态卸载。
      

  4.   

    嗯! 今天将主窗口基本弄出来了!
    添加了菜单、状态栏。 给状态栏 加了个进度条!。
    发现有个问题,如果 是MDI窗口,进度条竟然不能设置长度,如果移动到状态栏上,会把整个状态栏盖掉!
    MDIForm
      

  5.   

    这样很麻烦
    我建议还是本地下好dll调用
    服务器做一个版本控制
    本地从服务器读取版本
    版本有变化再去下载新文件
    这样相对好控制得多
      

  6.   

    嗯! 关于软件插件架构,原来没有想象的困难!构想:
    1、将主程序和插件程序都做成EXE。
    2、主程序根据需要运行插件程序,并窗体将其抓取到自己的窗体中作为子窗体。难点:
    1、避免插件的重复运行。
    2、主程序与子程序间通讯,调用及传递结果。求指点!
      

  7.   


    嗯! 由于局域网中,带宽、存储空间,什么的都不是问题。
    运行时直接下载EXE文件,完全不影响。
      

  8.   

    下载了一个API帮助,学学看!
      

  9.   


    嗯! 由于局域网中,带宽、存储空间,什么的都不是问题。
    运行时直接下载EXE文件,完全不影响。
    楼主好厉害求带。我也是excel公式转access转sql 真是缘分
      

  10.   


    嗯! 由于局域网中,带宽、存储空间,什么的都不是问题。
    运行时直接下载EXE文件,完全不影响。
    楼主好厉害求带。我也是excel公式转access转sql 真是缘分共同学习 共同进步!
      

  11.   


    嗯! 由于局域网中,带宽、存储空间,什么的都不是问题。
    运行时直接下载EXE文件,完全不影响。
    不是带宽和空间什么的问题
    是自身编码的简便程度,再没有特殊需求的情况下
    还是减少无谓的业务代码比较好些.
      

  12.   

    我晕哦!
    化了一天重写了一个读取配置文件的类模块。 弄完了才发现,原来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
      

  13.   

    复杂的设置ini可能不够xml要好点不过一般应用ini就够了
      

  14.   

    主程序EXE,功能模块DLL。1、EXE不要引用DLL,用createobject来创建。
    2、EXE只负责:下载,启动主DLL。所以功能都在DLL中。EXE只是个下载器和启动器。明白不?
      

  15.   

    有没有教程大神。我想把过程放到dll中
      

  16.   

    嗯! 主程序基本完成。能启动独立子程序(EXE),并将其抓来做子窗体。
    能够同时启动多个子程序,并能通过按键 自由切换、关闭。
      

  17.   

    VB6可视化程序设计(无锡职业技术学院)http://download.csdn.net/detail/zhao4zhong1/6824713
      

  18.   

    还可以使用Web控件的BS结构更加方便!