Quantcast
Channel: VBForums
Viewing all articles
Browse latest Browse all 15519

DataTableAdapter.Fill Error: Command is missing required clause

$
0
0
I am trying to read three dBase IV tables. The code works fine with two of the tables but not the third. The exception message is not particularly informative as all three are identical except for names.The problem is near the end on file csInd.dbf. Since the required extension for connecting to dBase files, I had to check for that file extension and copy files if necessary. That works fine. Here is the code:
Code:

  Private Sub BuildDB()
        Try
            ' Checking for existence and naming of required data tables
            ' Family Data Table -- This will form dataset and parent table
            If Not (My.Computer.FileSystem.FileExists(UserFolder + "csFamily.dbf")) Then
                If My.Computer.FileSystem.FileExists(UserFolder + "csfamily.udb") Then
                    My.Computer.FileSystem.CopyFile(UserFolder + "csfamily.udb", UserFolder + "csfamily.dbf")
                Else
                    gMsg = "Neither file " + UserFolder + "csFamily.udb nor file " + UserFolder + "csFamily.dbf was found."
                    MsgBox(gMsg, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                    btnEnd.PerformClick()
                End If
            End If

            'Individual DataTable csInd.dbf  This is child table
            If Not (My.Computer.FileSystem.FileExists(UserFolder + "csInd.dbf")) Then
                If (My.Computer.FileSystem.FileExists(UserFolder + "csInd.udb")) Then
                    My.Computer.FileSystem.CopyFile(UserFolder + "csInd.udb", UserFolder + "csInd.dbf")
                Else
                    gMsg = "Neither file " + UserFolder + "csInd.udb nor file " + UserFolder + "csInd.dbf was found."
                    MsgBox(gMsg, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                    btnEnd.PerformClick()
                End If
            End If
            'Using cdFamily to build dsFamily dataset and dtFamily datatable
                Dim csFamily As String = ""
                csFamily = "Provider=vfpoledb;Data Source=" & UserFolder & "csFamily.dbf;Extended Properties=dBASE IV;User ID=Admin;Password=;"
                Dim dcFamily As OleDb.OleDbConnection = New OleDb.OleDbConnection(csFamily)
                Dim cmdFamily As New OleDb.OleDbCommand("SELECT FAMILY_ID,FAM_NAME, ADDR1,ADDR2, CITY,STATE,ZIP,H_PHONE,GROUP_NAME,HEAD,HEAD_ID,SPOUSE,SPOUSE_ID,UDF1,UDF2 FROM csFamily ORDER BY GROUP_NAME", dcFamily)
                Dim daFamily As New OleDb.OleDbDataAdapter
                Dim dsFamily As New DataSet("dsFamily")
            Dim bsFamily As BindingSource = New BindingSource
            'Checking for Photo data table. Will incorporate photo path in dtFamily
            If Not (My.Computer.FileSystem.FileExists(UserFolder + "csphoto.dbf")) Then
                If My.Computer.FileSystem.FileExists(UserFolder + "csphoto.udb") Then
                    My.Computer.FileSystem.CopyFile(UserFolder + "csphoto.udb", UserFolder + "csphoto.dbf")
                Else
                    gMsg = "Neither file " + UserFolder + "csphoto.udb nor file " + UserFolder + "csphoto.dbf was found."
                    MsgBox(gMsg, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
                    btnEnd.PerformClick()
                End If
            End If

            Dim csPhoto As String = ""
                csPhoto = "Provider=vfpoledb;Data Source=" & UserFolder & "csphoto.udb;Extended PropELerties=dBASE IV;User ID=Admin;Password=;"
                Dim dcPhoto As OleDb.OleDbConnection = New OleDb.OleDbConnection(csPhoto)
                Dim cmdPhoto As New OleDb.OleDbCommand("SELECT PHOTO_ID, FILE_LIB FROM csPhoto.udb ORDER BY PHOTO_ID", dcPhoto)
                Dim cmdPhotoString As String = cmdPhoto.CommandText
                Dim daPhoto As New OleDb.OleDbDataAdapter
                Dim dsPhoto As New DataSet("dsPhoto")
                Dim dtPhoto As New DataTable
                Dim bsPhoto As BindingSource = New BindingSource
            'Finally building dsFamily and getting the photo path
            dcFamily.Open()
                daFamily.SelectCommand = cmdFamily
            'daFamily.Fill(dtFamily)
                daFamily.Fill(dsFamily, "dtFamily")
                bsFamily.DataSource = dtFamily
            dcPhoto.Open()
                daPhoto.SelectCommand = cmdPhoto
            ' daPhoto.Fill(dtPhoto)
                daPhoto.Fill(dsPhoto, "dsPhoto")
                bsPhoto.DataSource = dtPhoto
                Dim colcount As Integer = dtFamily.Columns.Count
                dtFamily.Columns.Add("PhotoLocation")
                Dim FamID As String = ""
            Dim RowCount As Integer = dtFamily.Rows.Count
            'Getting photo path and inserting it into dtFamily
                For I = 0 To RowCount - 1
                    FamID = dtFamily.Rows(I).Item("Family_ID")
                    Try
                        Dim r() As DataRow = dtPhoto.Select("Photo_ID = " + FamID)
                        dtFamily.Rows(I).Item(colcount) = r(0).Item(1)
                    Catch ex2 As Exception
                    End Try
                Next
                With dgvFamily
                    .DataSource = dtFamily
                    .Show()
                End With
                nbrFamilies = dtFamily.Rows.Count
                'nbrFamilies = dgvFamily.RowCount
            'MsgBox("Number of Family Records: " + nbrFamilies.ToString)
            'Working on csInd to get datatable dtInd
            Dim csInd As String = "Provider=vfpoledb;Data Source=" & UserFolder & "csind.dbf;Extended Properties=dBASE IV;User ID=Admin;Password=;"
            Dim dtInd As New DataTable
            ' Dim dsInd As New DataSet("dsInd")
            Dim dcInd As OleDb.OleDbConnection = New OleDb.OleDbConnection(csInd)
            Dim cmdInd As New OleDb.OleDbCommand("SELECT Ind_ID, FAMILY_ID, FIRST_NAME, LAST_NAME,PREFERNAME,C_PHONE,EMAIL1,EMAIL2", dcInd)
            Dim cmdIndString As String = cmdInd.CommandText
            Dim daInd As New OleDb.OleDbDataAdapter
            daInd.SelectCommand = cmdInd
            Dim bsInd As BindingSource = New BindingSource
            dcInd.Open()
            daInd.Fill(dtInd)
            bsInd.DataSource = dtInd
            dsFamily.Tables.Add(dtInd)
            dsFamily.Relations.Add("FamilyMembers", dsFamily.Tables("dtFamily").Columns("FAMILY_ID"), dsFamily.Tables("dtInd").Columns("FAMILY_ID"))
            ' WordPrintDirectory()
            SingleColumnWordPrint()
        Catch ex As Exception
            gMsg = "The following error occurred building the database:" + vbCrLf + ex.Message.ToString + vbCrLf
            MsgBox(gMsg, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
            btnEnd.PerformClick()
        End Try
    End Sub


Viewing all articles
Browse latest Browse all 15519

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>