2

必要な列を選択してから、プライマリ ID ID で並べ替えられた部屋番号である一意の ID を指定して、最新のデータベース エントリを取得する方法をテストしたときに、このエラーが発生しました。

これは私のコードです:

  Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\patientinfo.accdb"
    Conn.Open()

  Dim statement As String = " SELECT room_number, patient_name,patient_age,date_confinement,type_sickness, type_fluid, bottle_used, drop_rate FROM tblPatientInfo WHERE room_number=1 ORDER BY ID DESC LIMIT 1"
  RetrieveInfos(statement)

  End Sub

  Public Sub RetrieveInfos(ByRef statement As String)
    Dim cmd As OleDbCommand = New OleDbCommand
    With cmd
        .CommandText = statement
        .CommandType = CommandType.Text
        .Connection = Conn
        .ExecuteNonQuery()


        '--read records in access database----------------
        Dim reader As OleDbDataReader = cmd.ExecuteReader
        While reader.Read
            lblName.Text = (reader.GetString(0))
            lblAge.Text = (reader.GetInt32(1).ToString)
            lblDate.Text = (reader.GetDateTime(2).ToString)
            lblSickness.Text = (reader.GetString(3))
            lblFluid.Text = (reader.GetString(4))
            lblBottle.Text = (reader.GetInt32(5).ToString)
            lbldrops.Text = (reader.GetInt32(6).ToString)

        End While
      reader.Close()

    End With
End Sub

どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

3

「LIMIT1」句は疑わしいです。「SELECTTOP1.....」を使用するようにクエリを変更することを提案します。

Dim statement As String = " SELECT TOP 1 room_number, patient_name,patient_age,
                            date_confinement,type_sickness, type_fluid, bottle_used, drop_rate FROM 
                            tblPatientInfo WHERE room_number=1 ORDER BY ID DESC"

(明確にするために、ここではハードリターンでラップされたクエリ)。

于 2012-09-12T18:02:30.600 に答える
2

limit は MySql に固有です。

Access または SQL Server の場合:

Select top 1 from ...
Order by ...

オラクルの場合:

Select *
from
(
    Select ...
    Order by ...
)
Where row_num = 1
于 2012-09-12T18:14:07.147 に答える