• 締切済み

CRecordsetのEdit関数について

開発環境:VC++.NET DB:Access2000 今、DBの更新で迷っています。 すみませんが、ヒントを頂けたら幸いです。 CDatabase::OpenExでデータソースとの接続を確立して、 CRecordset::Open(CRecordset::dynaset,sql,CRecordset::none)で レコードの選択をしました。 その後にCRecordset::CanUpdate()で更新可能な事を確認して CRecordset::Edit();を呼ぶとエラーが発生してしまいます。 エラー箇所は、dbcore.cppのEdit()のASSERT(m_nFields != 0)部分です。 なぜ、ASSERT(m_nFields != 0)で落ちてしまうのか?を 教えていただきたく。 m_nFieldsというのは、どこで設定するのか?も 教えていただきたく。 宜しくお願い致します。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>CRecordset::Open(CRecordset::dynaset,sql,CRecordset::none)で どんなSQLですか?

ryou0607
質問者

お礼

すみません。 テーブル毎にCRecordsetクラスを継承させたクラスを作る事で上記の問題を解決する事ができました。 ありがとうございました。

ryou0607
質問者

補足

すみません。補足します。 SQLは 「SELECT * FROM テーブル名」です。 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ハンドルされていない例外は・・・

    ハンドルされていない例外はXXX.exe(YYY.DLL)にあります 0xC0000005:Access Violationというエラーが出ます。 エラーが出ている場所は int nRet = oraDyna.Open(*ZZZ, Sql); です。 ここを通過する時にエラーが発生します。 エラーの原因として何が考えられるでしょうか? 開発環境はWindows2000 VC++6.0です。 よろしくお願いします。

  • SQLで日付の更新は?

    DBの初心者です。 DBはAccess。 日付の項目のレコードを更新したいのですが SQLではどうかけばいいのでしょうか? レコードは複数です。 更新パターン1  年を一括で2003から2004に変更する   2003/06/20 → 2004/06/20 更新パターン2  現在のレコードの内容の日付を10日後に変更する  2003/06/20 → 2004/07/01 よろしくお願いします。

  • sql文のヵウント関数について

    sql文のcountを使い、humanテーブルのレコード件数を取得し出力したいのですが、 Object of class SQLite3Result could not be converted to string in のエラーが出て困っています。 (1)humanテーブルのレコード件数を表示する方法を教えてください。(sql文はうまく動いているのが確認できているので、表示する方法を教えていただきたいです。データベースの接続も正常です。) (2)sqlの出力って配列のみなのでしょうか? <?php // 変数の初期化 $db = null; $query=null; $con =null; $db = new SQLite3("test.db"); $res = $db->query ($sql); // データの取得 $query = "SELECT count (id) from human"; //クエリを実行 $con = $db->query($query); //データの件数を表示する print $con; ?>

    • ベストアンサー
    • PHP
  • ExcelからAccessを操作中のウエイト

    AccessのデータをExcelからSQL文を使って取り出しています。 複数のレコードセットを2次元配列に取り組むために With My_RecSet On Error Resume Next .Open MySQL, My_DB On Error GoTo 0 Application.Wait Now + TimeValue("00:00:01") On Error GoTo RsCloseHdl If .EOF And .BOF Then '該当するレコードセットが一つもない場合 SQL_ext = -1  ←Function名 Exit Function Else SQL_ext = .GetRows End If としています。 私のパソコンの性能の関係かもしれませんが、ウエイトを入れないとたまに、レコードセットが1つ以上あるのにも関わらず.EOF And .BOF で引っ掛かります。1秒以下のウエイトの入れ方を教えて頂けませんか? また、たまに、.Closeさせているにも関わらす、.Open MySQL, My_DBで、すでに開いているものに開けませんとエラーがでるので、やむなく、On Error Resume Nextとしています。限られた情報の提供となりますが、わかる範囲で教えて頂けないでしょうか? よろしくお願いいたします。

  • 複数データベースへの問い合わせ

    同一サーバーに(DB1,DB2,DB3)と複数のデータベースがあった場合(ユーザーは同じです)、SELECTの際に複数のDBに対しての問い合わせをすることはできるのでしょうか? それぞれのデータベースはテーブルも全く同じ構造で、 そこから特定のフィールドのレコードだけを引っ張り出して使いたいのですが、SQLをどのように書いていいのかがわかりません・・・ ヒントだけでもいただけると嬉しいです。よろしくお願いします。

  • SQL構文エラー

    SQL構文エラーがでているのですが、どこが悪いのか 見つける事ができません。 SQLのデバッグツールなどはないのでしょうか? なるべくフリーソフトでなんですけど 知っている方がいたら教えて下さい。 言語:VB6.0 SP5 DB:Access  Vectorなどで探したのですが、シェアなどがおおかったです。

  • PEARでレコード数の取得

    レコード数の取得でPEAR_DBで $sql = 'SHOW COUNT(*) FROM XXX'; $res = $db->query($sql); $rocordcnt = $res->fetchRow(); したら Fatal error: Call to undefined method DB_Error::fetchRow() になりました。 $sql = 'SHOW * FROM XXX';だったら$rocordcntに最初にヒットしレコードが 配列で入るのですが、count(*) を得るにはどうしたらよいですか? 他の方法のありますが、勉強のために count(*) の結果の取得を教えて下さい。

    • ベストアンサー
    • MySQL
  • 本テーブルに変更内容を反映する方法

    【Access 2013 VBA】 今、Workテーブルメイン、Workテーブルサブがあり、それをレコードソースにしたメインフォームとそのサブフォームがあります。 この画面で、サブの帳票のレコードを編集し、また、新規入力したものから 本になるテーブルのメインとサブに更新をする処理を作っています。 その更新先のレコードセットのSQLは以下のとおりです。 SQL = "SELECT " SQL = SQL & "[SubTable].*, " SQL = SQL & "[MainTable].* " SQL = SQL & "FROM [SubTable] " SQL = SQL & "LEFT JOIN [MainTable] ON " SQL = SQL & "[SubTable].[ID] = [MainTable].[ID]" この時、Recのフィールドの値を行進する時はいいのですが、 SubTableに新規レコードを追加する場合、 どのようにすれば良いのかわかりません。 普通にRec.AddNewとすると 上のMainTableにも新規レコードができるのでしょうか? よろしくお願いします。

  • yes/no型の更新ができない

    ASP+Access2003の環境です。 DB(test)の項目でyes/no型の項目(position)があり、この項目を更新したいので、 Update test Set position = false WHERE fileno = 11111 というようなSQL文を作成したのですが、実行すると「UPDATE ステートメントの構文エラーです。」のエラーメッセージがでます。 他の型の項目を更新しようと、 Update test Set usename = 'strNAME' WHERE fileno = 11111 というようなSQL文を作成して実行すると成功します。 何が原因なのでしょう?

  • SQLiteのデータベースについて

    PHP初心者です。以下のSQLiteより作成するデータベースについて教えてください。 $DB = sqlite_open('db1.db'); $sql="create table tables(id integer ,name,texts)"; $result=sqlite_query($db,$SQL); 上記、プログラムにより、同ディレクトリに、db1.dbが作成されますが、このデータベース情報はどのようにして、閲覧するのでしょうか(MS-ACCESS、SQLのように簡単に閲覧できないのか)。主キーやテーブルの名前またはフィールドの名前の変更、データ一覧閲覧などどのようにするのでしょうか。 環境は、Windows環境で、PHP4を使用しております。 よろしくお願いいたします。

    • ベストアンサー
    • PHP