2012-12-17 3 views
2

최근에 저는 As Computing 클래스로 VB 프로젝트를 시작했습니다. 그리고 vb 코딩의 고통스러운 몇 시간 후에 단단한 벽돌 벽에 부딪 혔습니다. 어떤 모양입니까?VB.net은 함수로 입력을 입력합니다.

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을 호출 할 때마다 데이터가 가득 찬 배열 대신 빈 화면이 반환됩니다. 이 함수는 함수 호출을 통해 전달 된 데이터를 보유하고 저장 한 다음 배열에 저장하도록 설계되었습니다. opt 인수로 1이 전달되면 배열에 보관 된 모든 데이터를 출력합니다. 나는 이것이 멍청한 질문이지만 나는 전에 vb.net을 사용 해본 적이 없다는 것을 알고 있으며, 나는 학교에서만하고있다.

여기 http://pastebin.com/nWxvx9pz

+1

당신은 함수가 정적을 선언하려고 실행 –

+1

또한, 'num1'은 정적이어야하며 문자열이 아닌 정수 여야합니다. –

답변

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 
+0

답장을 보내 주셔서 대단히 감사합니다. 그러나 불행히도 저는 아직 vb.net에서 그다지 진보하지는 않았지만, 하위 Main 대신 모듈에서 변수를 선언하는 것이 정상적으로 작동하는 것 같았습니다. 하지만 어쨌든 당신이 내 인생을 구한 모든 대답을 주셔서 감사합니다 :) – 5m0k3

0

이 프로그램의 주석 위의 모듈 수준에서 귀하의 모든 변수를 선언 코드의 나머지 부분입니다. 한 번 해보신 후 지금 어디에서 제거 하시겠습니까? 판매 화면 상단에 catlogue로 판매되는 품목의 선택을 표시하십시오.

 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을 잊지

일 등 ... 정수가 아닌 다른 멤버가 지적 문자열입니다.

는 최대 수를 찾을 수 한 Statment UBound 함수 (배열 이름 여기)를 사용하여 ... 변수라고 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 

을 상점 절차의 Qunatity를 표시하려면 배열의 배열 요소 중 현재 NUM2 변수를 통해 AMOUNT() 배열에 액세스 할 수 있습니다.

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 
관련 문제