收录日期:2018/06/24 13:26:46 时间:2016/05/18 03:13:52 标签:网络编程
Option Explicit
Private g_DB As Database

Private Sub MDIForm_Load()
   Set g_DB = OpenDatabase("e:\城市企业评价\zbgl.mdb", False, False)
End Sub

Private Sub MDIForm_Unload(Cancel As Integer)
   g_DB.Close
   Set g_DB = Nothing
End Sub
Private Sub mnuEIfactorEdit_Click()
   Dim frmNew As New frmView
   frmNew.showdata objDB:=g_DB, _
      frmCaller:=Me, _
      sTableName:="zbgl", _
      sItemSingular:="指标管理", _
      sItemPlural:="指标管理", _
      sViewQuery:="qryList", _
      sIDField:="zbbm"

End Sub
这里的“objDB:=g_DB”是什么意思?
像是自定义过程showdata中的参数,请将SUB showdata()的程序贴出来看看.
看着好像是DELPHI的代码
Public Sub showdata(objDB As Database, _
   frmCaller As MDIForm, _
   sTableName As String, _
   sItemSingular As String, _
   sItemPlural As String, _
   sViewQuery As String, _
   sIDField As String)

   '
   ' Store parameters in member variables
   '
   
   Set m_DB = objDB
   Set m_frmCaller = frmCaller
   m_sTableName = sTableName
   m_sViewQuery = sViewQuery + sTableName
   m_sItemSingular = sItemSingular
   m_sItemPlural = sItemPlural      '窗口标题
   m_sIDField = sIDField


   ' Open the database and load the
   ' records into the window.
   '
    Select Case sTableName
           Case "zbgl"
                 ctlListView.ColumnHeaders.Add , , _
                    "指标编码", ctlListView.Width / 3
                ctlListView.ColumnHeaders.Add , , _
                    "指标名称", ctlListView.Width / 3
                ctlListView.ColumnHeaders.Add , , _
                    "含义", ctlListView.Width / 3
                ctlListView.ColumnHeaders.Add , , _
                    "指标权重", ctlListView.Width / 3
           Case "cityinfo"
                 ctlListView.ColumnHeaders.Add , , _
                    "编码", ctlListView.Width / 3
                ctlListView.ColumnHeaders.Add , , _
                    "名称", ctlListView.Width / 3
                ctlListView.ColumnHeaders.Add , , _
                    "简称", ctlListView.Width / 3
           Case "zbdata"
                ctlListView.ColumnHeaders.Add , , _
                    "评价企业", ctlListView.Width / 3
                ctlListView.ColumnHeaders.Add , , _
                    "年份", ctlListView.Width / 3
                ctlListView.ColumnHeaders.Add , , _
                    "指标", ctlListView.Width / 3
                ctlListView.ColumnHeaders.Add , , _
                    "指标数据", ctlListView.Width / 3
                ctlListView.ColumnHeaders.Add , , _
                    "指标权重", ctlListView.Width / 3
           Case Else
           
      End Select
   
   Set m_DB = OpenDatabase("E:\城市企业评价\zbgl.mdb")
   RefreshData
   
End Sub
Public Sub RefreshData()
   Dim rsData As Recordset
   Dim m_sTable As String
   m_sTable = m_sTableName
      
   ctlListView.ListItems.Clear
      
   Set rsData = m_DB.OpenRecordset(m_sTable, _
      dbOpenSnapshot, dbForwardOnly)
      
   Select Case m_sTable
           Case "zbgl"
              Do While Not rsData.EOF
                 ctlListView.ListItems.Add , _
                    ITEMPREFIX & rsData("zbbm"), _
                    rsData("zbbm")
         
                 With ctlListView.ListItems(ITEMPREFIX _
                    & rsData("zbbm"))
                    .SubItems(1) = rsData("zbmc") & ""
                    .SubItems(2) = rsData("zbhy") & ""
                    .SubItems(3) = rsData("zbqz") & ""
                 End With
                 rsData.MoveNext
              Loop
           Case "cityinfo"
              Do While Not rsData.EOF
                 ctlListView.ListItems.Add , _
                    ITEMPREFIX & rsData("citycode"), _
                    rsData("citycode")
         
                 With ctlListView.ListItems(ITEMPREFIX _
                    & rsData("citycode"))
                    .SubItems(1) = rsData("cityname") & ""
                    .SubItems(2) = rsData("cityshortname") & ""
                 End With
                 rsData.MoveNext
              Loop
           Case "zbdata"
              Do While Not rsData.EOF
                 ctlListView.ListItems.Add , _
                    ITEMPREFIX & rsData("zbdataID"), _
                    rsData("citycode")
         
                 With ctlListView.ListItems(ITEMPREFIX _
                    & rsData("zbdataID"))
                    .SubItems(1) = rsData("zbny") & ""
                    .SubItems(2) = rsData("zbbm") & ""
                    .SubItems(3) = rsData("zbvalue") & ""
                    .SubItems(4) = rsData("zbqz") & ""
                 End With
                 rsData.MoveNext
              Loop
           Case Else
           
      End Select
   rsData.Close
   Set rsData = Nothing
   
End Sub
程序倒是很好懂,如果能编译正常运行的话.“objDB:=g_DB”就是传参数,给对像赋值.
把"e:\城市企业评价\zbgl.mdb"作为数据库对像,作为showdata的参数.
这种方法我还真没用过.
DELPHI的代码是这样的,VB中还不知道,我要回去好好看书.
是VB的代码,:=是VB中合法的关键字。
具体怎么个叫法我忘了,先说一下用处。
如一个函数或子程序有非常多的参数,但大多数都是可选的。
Private Function test(a1 as integer,a2 as string,a3 as long,a4 as string) as integer
......
End Function
假如a2,a3,a4为可选参数,而你调用时只想填入最后一个参数,可以这样
res=test(b1,a4:=b4)
而不必res=test(b1,,,b4)
也就是通过 形参:=实参  这种形式打乱原来的参数代入顺序,是函数调用更加方便。
up
只在VB使用SQL语法时用到吧。
为什么不先去查一下MSDN呢?

用命名的参数创建简单语句
对许多内建函数、语句和方法,Visual Basic 提供了命名参数方法来快捷传递参数值。对命名参数,通过给命名参数赋值,就可按任意次序提供任意多参数。为此,键入命名参数,其后为冒号、等号和值 (MyArgument := "SomeValue") ,可以按任意次序安排这些赋值,它们之间用逗号分开。注意,下例中的参数顺序和所要参数的顺序相反:

Function ListText (strName As String, Optional strAddress As String)
   List1.AddItem strName
   List2.AddItem strAddress
End Sub

Private Sub Command1_Click ()
   ListText strAddress:=”12345”, strName:="Your Name"
End Sub

如果过程有若干不必总要指定的可选参数,则上述内容更为有用。

确定对命名参数的支持
要确定哪一个函数、语句和方法支持命名参数,用“代码”窗口中的“AutoQuickInfo”功能,检查“对象浏览器”,或者参阅语言参考。使用命名参数时要注意以下几点: 

在 Visual Basic (VB) 对象库中的对象的方法不支持命名参数。而 Visual Basic for applications (VBA) 对象库中的所有的语言关键字都支持命名的参数。


在语法中,命名参数是用粗体和斜体字表示的。所有其它参数只用斜体字表示。 
重点 使用命名参数时不能省略所需参数的输入。可以只省略可选参数。对于 Visual Basic (VB) 和 Visual Basic for applications (VBA) 对象库,“对象浏览器”对话框将可选参数用方括号 [ ] 括起来。



VB中的命名参数,用:=来传递参数值
怎么像Delphi的赋值号
哎呀,又学到了新东西
:= 是给过程或函数的可选参数赋值,例如
Private Sub SomeSub(Para1 as Double, Optional Para2 As Integer = 3, Optional Para3 As Double = 2.3, Optional Para4 As String = "Hello")
调用时
 SomeSub 3.3, Para4:="How Are You"
Exp +1
LV UP!
新东东,好东东!^_^