Средство чтения данных ODBC HasRows=True, но нет данных

Я подключаюсь к базе данных Access через ODBC с помощью Powershell, читаю данные из Access, чтобы преобразовать их в другую базу данных. У меня есть один запрос, который вызывает у меня проблемы, потому что, хотя HasRows возвращает True, когда я пытаюсь пройти через считыватель, он действует так, как будто он находится в конце считывателя. Вот код, который я использую

          $FMconn = new-object System.Data.Odbc.OdbcConnection
    $FMconn.ConnectionString = "DSN=AccessFileMaker"
    $FMconn.Open()
    
    $FMCmd = $FMconn.CreateCommand()
    $FMCmd.CommandTimeout = 0

    $sql = "
        SELECT
            fd__folder.id as folderid
            ,fd__folder.folderletter
            ,wl__wallet.id as walletid
            ,wl__wallet.walletnumber
        FROM 
            fd__folder
            INNER JOIN wl__wallet
                ON fd__folder.id_wallet = wl__wallet.id
        WHERE
            fd__folder.folderLetter > ''
    "

    $FMCmd.CommandText = $sql
    $Reader = $FMCmd.ExecuteReader()
    if ($Reader.HasRows) {
        while ($Reader.Read())
        {
            $folderID = $Reader["folderid"].ToString()
            $folderletter = $Reader["folderletter"].ToString().TrimEnd()
            $walletID = $Reader["walletid"].ToString()
            $walletNum = "Wallet " + $Reader["walletnumber"].ToString().TrimEnd()
            (other code here to insert data into the other DB but irrelevant to the problem)
        }
        $Reader.Close()
    }

Когда я прохожу код, я добираюсь до while($Reader.Read()) и сразу переходит к $Reader.Close()

Запрос выполняет поиск в Access как есть и возвращает 56 115 записей. Я использовал этот же процесс для извлечения других записей из Access (хотя ни один из запросов не включал соединение). Так почему же я не могу просмотреть записи этого запроса, если в Reader есть строки? Любая помощь в отладке этого будет принята с благодарностью.

0 ответов

Другие вопросы по тегам