0

このコードで私が何を間違えたかわかりますか? DBUtils を使用していくつかのテキスト ボックスにデータを入力していますが、"Get" の行で "Null pointer exception" が発生します。また、Toast を使用して、intCurrentId に実際に値があることを確認しました。

使用したコードは次のとおりです。

Sub ListViewPeopleEventHandler_ItemClick (Position As Int, Value As Object)

  ' Update the details area.
  '-------------------------
  Dim valuesFromTheListView() As String
  valuesFromTheListView = Value

  intCurrentId = valuesFromTheListView(0)

  Dim mapOfTableFields As Map
  mapOfTableFields = DBUtils.ExecuteMap(SQL, _
          "SELECT Id, FirstName, LastName FROM PeopleToVisit WHERE id = ?", _
          Array As String(intCurrentId))

  ToastMessageShow(intCurrentId, False) 

  ' I get the error on this next line.
  '-------------------------------------
  EditTextFirstName.Text = mapOfTableFields.Get("FirstName")

  EditTextFirstName.RequestFocus
  EditTextFirstName.SelectAll
  EditTextFirstName.Color = Colors.Cyan

  EditTextLastName.Text = mapOfTableFields.Get("LastName")
  EditTextLastName.RequestFocus
  EditTextLastName.Color = Colors.Cyan

  tableMode = "Edit"
  Activity.Title = "Maintenance - Result Of Visit *** EDIT ***"
End Sub

これは、データベース テーブルの構造です。

SQL.ExecNonQuery("CREATE TABLE PeopleToVisit (" & _
                 "Id INTEGER PRIMARY KEY, " & _
                 "FirstName TEXT, " & _
                 "LastName TEXT, " & _
                 "Address1 TEXT, " & _
                 "Address2 TEXT, " & _
                 "City TEXT, " & _
                 "State TEXT, " & _
                 "Zip TEXT, " & _
                 "PrimaryPhone TEXT, " & _
                 "SecondaryPhone TEXT, " & _
                 "Email TEXT, " & _
                 "LastVisitNote TEXT " & _
                 ")")

ありがとう。

4

1 に答える 1

0

DBUtilsバージョンが機能しなかった理由はわかりませんが、この改訂バージョンのサブプロシージャのようにカーソルを使用すると、すべて問題なく機能しました。

Sub ListViewPeopleEventHandler_ItemClick (Position As Int, Value As Object)

    ' Update the details area.
    '-------------------------
    Dim valuesFromTheListView() As String
    Dim oRecordSet As Cursor

    valuesFromTheListView = Value   
    intCurrentId = valuesFromTheListView(0)

    oRecordSet = SQL.ExecQuery( _
        "SELECT Id, FirstName, LastName " & _
          "FROM PeopleToVisit " & _
         "WHERE id = " & intCurrentId)

    If oRecordSet.RowCount > 0 Then
        oRecordSet.Position = 0

        EditTextFirstName.Text = oRecordSet.GetString("FirstName")
        EditTextLastName.Text = oRecordSet.GetString("LastName")
    End If

    EditTextFirstName.RequestFocus
    EditTextFirstName.SelectAll
    EditTextFirstName.Color = Colors.Cyan

    EditTextLastName.RequestFocus
    EditTextLastName.Color = Colors.Cyan

    tableMode = "Edit"
    Activity.Title = "Maintenance - Result Of Visit *** EDIT ***"
End Sub
于 2011-11-25T13:23:00.600 に答える