【问题标题】:What this Visual Basic 6.0 code do?这个 Visual Basic 6.0 代码有什么作用?
【发布时间】:2011-03-16 01:26:08
【问题描述】:

下面的这个 Visual Basic 6.0 代码有什么作用?但是它已用于搜索功能,我不清楚。所以请解释一下它的作用。

Private Sub cmdSearch_Click()
    Dim key As Integer, str As String
    key = InputBox("Enter the Employee No whose details u want to know: ")
    Set rs = Nothing
    str = "select * from emp where e_no=" & key
    rs.Open str, adoconn, adOpenForwardOnly, adLockReadOnly
    txtNo.Text = rs(0)
    txtName.Text = rs(1)
    txtCity.Text = rs(2)
    txtDob.Text = rs(4)
    txtPhone.Text = rs(3)
    Set rs = Nothing
    str = "select * from emp"
    rs.Open str, adoconn, adOpenDynamic, adLockPessimistic
End Sub

【问题讨论】:

  • 我想知道 rs。在调用方法之前它被设置为空。我知道这是合法的,但通常不受欢迎。
  • 是的,我也被卡住了!

标签: vb6


【解决方案1】:

尚未有人明确指出,rs 必须声明为As New RecordSet,这样Set rs = Nothing 的含义就与Set rs = New RecordSet 相同。

【讨论】:

  • 也许比“知道你的编码在做什么以及为什么”更重要。我可以看到这个正在燃烧的复制/粘贴编码器非常糟糕。
  • @Bob “明白了”,我的意思是“理解你的代码和你的语言”这个问题经常困扰经验不足的 VB6 程序员,所以 Ant 不一定会因为错过这一点而感到愚蠢。您正确地强调,任何受此困扰的人都需要进行一些学习(除非他们不想继续作为 VB6 程序员进行开发)。
【解决方案2】:
Private Sub cmdSearch_Click()
    Dim key As Integer, str As String
    key = InputBox("Enter the Employee No whose details u want to know: ") ''// query the user for a name
    Set rs = Nothing
    str = "select * from emp where e_no=" & key ''//create sql query on the fly
    rs.Open str, adoconn, adOpenForwardOnly, adLockReadOnly ''// create a connection to an sql database
    txtNo.Text = rs(0) ''//assign the results of the query to input fields or labels
    txtName.Text = rs(1)
    txtCity.Text = rs(2)
    txtDob.Text = rs(4)
    txtPhone.Text = rs(3)
    Set rs = Nothing
    str = "select * from emp"
    rs.Open str, adoconn, adOpenDynamic, adLockPessimistic ''// creates a new sql connection and load the whole emp table
End Sub

简短摘要:询问用户姓名并在标签或文本框中显示用户的数据。

【讨论】:

  • rs 被宣布为无的原因是什么?是必须的吗??
  • 不,它是在方法外声明的实例变量。它只是重置内容以重复使用它。
  • 那这行代码是怎么工作的呢? "txtNo.Text = rs(0)" ,找到emp_no后如何正确显示?
  • rs(0) 是 sql 查询中的第一个字段。它的工作假设是数据库中 emp 表中的第一个字段是员工编号。
  • @Anto Aravinth: txtNo.Text = rs(0)txtNo.Text = rs.Fields.Item(0).Value 的缩写,因为Recordset 的默认属性是对象是FieldsCollection 类型),a 的默认属性CollectionItemField 类型),Field 的默认属性是对象是 Value
【解决方案3】:

它对数据库进行两次搜索。第一次搜索的结果用于填充一些文本框。第二次搜索的结果……好吧,我不知道他们在用它做什么。

【讨论】:

    【解决方案4】:

    它根据名为 e_no 的列从数据库中查找数据,将找到的行中的信息加载到 TextBox 控件中,然后重新查询数据库中的所有 emp 行。

    【讨论】:

    • 那么这行代码是如何工作的呢? "txtNo.Text = rs(0)" ,找到emp_no后如何正确显示?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    相关资源
    最近更新 更多