2

最近,我开始为我的 As 计算课程编写项目 VB,经过几个痛苦的 vb 编码后,我碰到了坚固的砖墙。看起来像这样

Private Function store(ByVal opt As Integer, ByVal inp As String, ByVal q As String) As String
        Dim na_me(20), amount(20), num1 As String
        Select Case opt
            Case 0
                na_me(num1) += inp
                amount(num1) += q
                num1 += 1
                Return "1"
            Case 1
                For Each Str As String In na_me
                    Console.WriteLine(Str)
                Next
                Return "1"
            Case 2
                num1 = 0
                Return "1"
            Case Else
                Return "0"
        End Select
    End Function

每次调用参数 1 时,它只返回空白屏幕而不是充满数据的数组。该函数旨在保存和保存通过函数调用传递的任何数据,然后将其保存到数组中。一旦 1 作为 opt 参数传递,然后打印出数组中保存的所有数据。我知道这是一个菜鸟问题,但我以前从未使用过 vb.net,而且我只在学校这样做。

这是其余的代码http://pastebin.com/nWxvx9pz

4

3 回答 3

2

或者,您可以执行类似的操作并使用强类型集合/属性。

如果您确实需要将这些作为数组获取,那么您只需要 MyStoredValues.ToArray()

Module Module1


    Private na_me As List(Of String)
    Public Property MyStoredValues() As List(Of String)
        Get
            If na_me Is Nothing Then
                na_me = New List(Of String)
            End If
            Return na_me
        End Get
        Set(ByVal value As List(Of String))
            na_me = value
        End Set
    End Property


    Private amount As List(Of String)
    Public Property MyAmount() As List(Of String)
        Get
            If amount Is Nothing Then
                amount = New List(Of String)
            End If
            Return amount
        End Get
        Set(ByVal value As List(Of String))
            amount = value
        End Set
    End Property



    Sub Main()
        store(0, "TEST TEST TEST", "10.23")
        store(0, "TEST2 TEST2 TEST2", "11.33")
        store(1, "", "")
        Console.ReadKey()
    End Sub
    Private Function store(ByVal opt As Integer, ByVal inp As String, ByVal q As String) As Boolean

        Select Case opt
            Case 0
                MyStoredValues.Add(inp)
                MyAmount.Add(q)

                Return True
            Case 1
                For Each Str As String In MyStoredValues
                    Console.WriteLine(Str)
                Next
                Return True

            Case Else
                Return False
        End Select
    End Function
End Module
于 2012-12-18T06:45:25.030 回答
0

在程序注释上方的模块级别声明所有变量。完成后将它们从它们现在所在的位置删除。在销售屏幕的顶部显示正在出售的物品的选择作为目录。

就像是...

        Do
        Console.Clear()
        Console.WriteLine("CATALOGUE" & Chr(13) & Chr(13))
        Console.WriteLine("Id     Name                   Price" & Chr(13))
        Console.WriteLine("=======================================" & Chr(13))
        For num = 0 To 11
            Console.WriteLine(Format(num, "00") & "   " & product(num) & " " & price(num) & Chr(13))
        Next
        Console.WriteLine("=======================================" & Chr(13))
        Console.WriteLine(Chr(13))

不要忘记 NUM1 是一个整数,而不是另一个成员指出的字符串。

要在您的 STORE 过程中显示数量,请添加一个名为 num2 的变量并将其编码如下...

            Case 1
            Console.WriteLine("Your Selection" & Chr(13))
            For num2 = 0 To UBound(na_me) - 1
                Console.WriteLine(na_me(num2) & "   " & amount(num2) & Chr(13))
            Next

通过使用 UBOUND(array-name-here) 语句,您将找到当前数组中数组元素的最大数量,您还可以通过 NUM2 变量访问 AMOUNT() 数组

于 2012-12-18T06:38:00.377 回答
0
Try
            Dim con As New OleDbConnection
            Dim cmd As New OleDbCommand
            Dim ads As OleDbDataReader
            Dim ads1 As OleDbDataReader
            Dim dr As OleDbDataReader
             sql = "select joindate from Employee where Empcode='" & empid & "'"
                    cmd = New OleDbCommand(sql, con)
                    dr = cmd.ExecuteReader
           While dr.Read
                        If dr(0) > dtpdate.Value Then
                            MsgBox("Can't Pay advance!  Joined only on " & Format(dr(0), "dd-MMM-yyyy") & "")
                            Exit Sub
                        End If
                    End While
                    dr.Close()
                    cmd.CommandText = "insert into advance (Date,Empid,Amount,Remark,CompanyId,Confir)values('" & Format(dtpdate.Value, "dd/MMM/yyyy") & "','" & empid & "'," & txtamt.Text & ",'" & txtremark.Text & "'," & CompanyCode & ",'NO')"
                    cmd.ExecuteNonQuery()
 End Sub
于 2016-03-29T15:33:44.527 回答