掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
dbExpressおよびdbGoについて (ID:43762)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になります。 WindowsXP+Delphi2007+Office2003環境下でOracleテーブルデータをAccessへコピー処理を実行しています。 Oracleを読み込むのにTSQLConnection、TSQLQuery、TDataSetProvider、TClientDataSet、TDataSource Accessを読み込むのにTADOConnection、TADOQuery を使用しています。 そして下記のようなコードを実行したところ、今まで取り扱ったデータについては 開発環境、および実行環境で問題なく動いていましたが、 今回取り扱ったデータ(とても長い文字列データでカラム数十あり、それぞれ数千〜数万バイトの文字列が格納されています) については、前者は問題なしで後者は1件のみレコードコピーされませんでした。 下記プログラムではAccessテーブルデータをOracleへコピーする処理も実行しているため 上記のような部品の使い方をしていますが、Oracle→AccessについてはTClientDataSetは 不要だと思い、TDataSetProviderへのTSQLQueryの設定を解除したら実行環境でも問題なく動作するようになりましたが、 なぜにこの変更で動くようになったのか分かりません。(開発環境と実行環境の差異?) 上記対処で解決した理由または下記コードの問題など分かる方教えて頂けませんか。 *****実行しているプログラムの抜粋***** function TmodData.OracleToMdb: Boolean; var arySFields: TStringList; aryDFields: TStringList; strText, strValue: String; intCount, intTable, intPlus: Integer; begin Result := False; //Self.sqlTable.SchemaName:= Self.clsIniFIle.Scheme; if Self.ConnectOracle True then Exit; if Self.ConnectAccess True then begin Self.sqlConnection.Close;Exit; end; for intTable := 0 to Self.clsIniFIle.OTableAry.Count - 1 do begin Self.sqlTable.TableName := Self.clsIniFile.Scheme + . + Self.clsIniFIle.OTableAry[intTable]; Self.adoTable.TableName := Self.clsIniFIle.MTableAry[intTable]; arySFields := TStringList.Create; aryDFields := TStringList.Create; arySFields.CommaText := Self.clsIniFIle.OFieldsAry[intTable]; aryDFields.CommaText := Self.clsIniFIle.MFieldsAry[intTable]; Self.adoTable.Open; Self.adoTable.First; while not Self.adoTable.Eof do Self.adoTable.Delete; Self.sqlTable.Open; Self.sqlTable.First; while not Self.sqlTable.Eof do begin Self.adoTable.Append; for intCount := 0 to arySFields.Count - 1 do Self.adoTable.FieldByName(aryDFields.Strings[intCount]).Value := Self.sqlTable.FieldByName(arySFields.Strings[intCount]).Value; Self.adoTable.Post; Self.sqlTable.Next; end; aryPlus.Free; arySFields.Free; aryDFields.Free; Self.adoTable.Close; Self.sqlTable.Close; Application.ProcessMessages; end; Self.adoConnection.Close; Self.sqlConnection.Close; Result := True; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.