• 締切済み

データ更新時について

テーブルはテキスト形式なのですが、日本語で例えば LASY’Sと言う 名称をテーブルに作成すると ’ が原因でテーブル更新時にエラーが発生しましたと言うメーセージが出て作成されません。 GWrk_Sql = GWrk_Sql & ",'" & Me.[名称] & "'" 分かる方がいれば教えて下さい。

みんなの回答

  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.5

Me.[名称]に任意の文字列を入力可能なら、 事前にReplace関数などで「'」を別の文字に置き換えておくことをお勧めします。 SQLインジェクションの対策にもなるので。 例えば、「'」を「\s」にするとか。 他にも「,」や「"」などが危険ですが、同じようにすれば良いです。 ※ただし、元の文字に「\」が含まれているとまずいので、 最初に「\」を「\\」にする、などが必要です。 データを取り出す場合はもちろん、「\s」→「'」への逆変換が必要です。

noname#140971
noname#140971
回答No.4

? DBSelect("SELECT * FROM tab1 WHERE 名称=""Lad's""") 1;Lad's もOKです。

noname#140971
noname#140971
回答No.3

? DBSelect("SELECT * FROM tab1 WHERE 名称='Lad''s'") 1;Lad's テーブル名じゃなくて条件のデータということですか? 勘違いしていました。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

> GWrk_Sql = GWrk_Sql & ",'" & Me.[名称] & "'" GWrk_Sql = GWrk_Sql & ",""" & Me.[名称] & """" にしてみたらどうでしょう?

noname#140971
noname#140971
回答No.1

[イミディエイト] ? DBSelect("SELECT * FROM [Lay's] WHERE ID=1;") 1;AAA と、[]で囲めば。 しかし、言語とバージョンが不明ですよ。

cb7501128
質問者

補足

すいません。補足です。 ACCESS2003でマスタメンテ画面なのですが、名称と言うフィールドに LADY'Sと入力すると更新時にエラーが発生しましたと言うメーセージが出力されます。 GWrk_Sql = GWrk_Sql & ",'" & Me.[名称] & "'" で定義しているのですが、どうも 名称の中に’が入っているからだと思います。 他に何か良い方法はありますか?

関連するQ&A

  • Accessにてデータの更新

    Accessにて、フォームにボタンを作成し、クリックすると フォームのテキストボックスのデータを取得し、 テーブルのデータを更新するVBAを作りたいのですが、 mySQL = "UPDATE テーブル名 SET フィールド名 = '1234'" このようにすると、フィールドが1234のデータに更新されるのですが、 これを namae =Me!テキストボックス名 mySQL = "UPDATE テーブル名 SET フィールド名 = namae" とするとうまくいきません。 正しい書き方をお願いします。

  • データの更新について

    csvなどのテキストファイルからデータを取り込んで会員テーブルに更新するSQLを作成したくて考えています。 csvファイル 項目1:会員コード 項目2:名称 項目3:電話番号 いいやり方ではないと思いますがうまくいった方法を以下に書きます。 (1)ワークテーブル作成(csvと同じ項目) テーブル名:ワーク会員 項目1:会員コード 項目2:名称 項目3:電話番号 (2)UPDATE文実行 update 会員 K1 set 名称 = (select K2.名称 from ワーク会員 K2 where K2.会員コード = K1.会員コード), 電話番号 = (select K3.電話番号 from ワーク会員 K3 where K3.会員コード = K1.会員コード) where K1.会員コード IN (select 会員コード from ワーク会員 ) ブサイクな方法でしょうか? 他にもっといい方法があればアドバイスお願いします。

  • アクセスの更新クエリについて

    あいうテーブルの日付に、かきくテーブルの日付の値を更新したい場合はどうしたらよいのでしょうか? あいうテーブルの日付は複数レコード発生し、かきくテーブルの日付は1レコードです。 あいうテーブルの日付の値を一度で、かきくテーブルの日付の値に更新したいです。 アクセスのSQL文を以下の通りにするとエラーが発生します。 UPDATE DTあいう SET あいう.日付 = かきく!日付; アクセスのSOL文を教えてください!

  • ManagementStudioからのデータ削除

    初めてSQL Server 2008 Expressを入れて使用しているのですが、 作成したテーブルに同一データをいれて、 SQL Server Management Studio から上位200行編集を選択し その入れたデータを削除すると、エラーが発生して削除できません。 エラー内容は、 エラーメッセージ:行の値が更新または削除された為、行が一意になりません。または複数の行が更新されます。 特にプライマリキーの設定やインデックスなどは使用していないのですが、何か設定が必要なのでしょうか。 初歩的な質問で申し訳ありませんが、よろしくお願い致します。

  • SQLサーバーのテーブルに対してアクセスで更新クエリを行ないたい

    こんばんは。 ・vista ・アクセス2003 ・SQL Server 2005 です。 SQL ServerからテーブルをMDBへリンクしているのですが そのテーブルに対し、アクセス側で更新クエリを実行しようとすると 実行時エラー '3157': ODBC--リンク テーブル'テーブル名'での更新に失敗しました。 [Microsoft][ODBC SQL Server Driver]時間切れになりました。(#0) と言うエラーになり、更新クエリができません。 どうすればアクセスでSQLサーバーのテーブルに対して更新クエリを行えるのでしょうか? よろしくお願いします。

  • マスタデータ更新

    こんにちは。 システム開発の基礎的なところがわからないので、教えていただきたく、投稿させていただきます。 システム開発をほとんどやったことがないので、言葉が変なところもあるかと思いますが、宜しくお願いいたします。 サーバー上に、AというSQLServerのDBがあります。 今までは、システム管理者のみがAccessからA.DBのリンクテーブルを使い、マスタデータの更新/追加/削除を行っていましたが、今後、リーダークラスの人もできるようにしたい!という要望があり、そのインターフェース部分を作成しています。 いろいろと考え、フロントエンド側にAccessでB.mdbを作成し、そこには、A.DBと同じテーブル構造の一時TBLを作成し、B.mdbを開いた時にA.DBから全データを取得することにしました。(取得するところまではできています) ここから、設定するための画面作成をしますが、最終的に、更新/追加/削除されたデータは、どのようにA.DBにUPすればいいのでしょうか? 考えた方法として (1)B.mdb内に、一時テーブルとは別に、更に同じ構造の変更用テーブルを作成。 設定画面から更新/追加/削除されたデータは変更用テーブルに保存し、全ての処理が終了したら、変更用テーブルにあるデータを1つづつ見て、A.DBへ更新/追加/削除をかける (2)一時テーブルのデータを直接更新/追加/削除し、全ての処理が終了したら、全テーブルのレコードを1件づつ比較し、A.DBへ更新/追加/削除をかける というくらいしか思いつかないのです。 その他に思ったのが、一時テーブルもしくは変更用のテーブルに、レコード毎に「更新/追加/削除」がわかるようにフラグを設けて、そのフラグに従ったSQL文を発行する というくらいです。。。 根本的に、マスタデータに対する更新/追加/削除のやり方が間違っていたりしますか? 誰も聞ける人がいないので、どうぞ宜しくお願いいたします!!!

  • ピボットテーブルの更新時にエラーが出る

    ピボットテーブルを更新しようとすると、更新はできるのですが、『ピボットテーブル レポートは、ほかのピボットテーブル レポートと重なり合うことはできません。』というエラーが出ています。 原因と対処法を教えていただきたいです。

  • SQLで 更新できない

    ACCESSでSQLを使っています。 その中で 更新(UPDATE)できないものがあります。 (1) SQLでは 1行を複数に分けると上手くいったことあります。  そういうルールは あるのでしょうか? VB上 (2)実行したい例文は strSQL="UPDATE table SET A = B WHERE C=2 " この時、Bに ‘シングルクォーテーション? を加えると Bが 更新されるのですが 実際は Bは変数なので Bの値をAに更新したいのです。 けれど エラーになってしまいます。 1回 フォームのテキストBOXに入れてから  A= Me.BB のようにしたのですが ダメでした。 部分的にしか 表示していないのですが 何か気づく点があればお願いします。

  • Accessで日本語を使っていると実行時にエラーになる。

    Microsoft Accessでデータベースを作成した。そのデータベースを使って、JdbcOdbcDriverでMicrosoft Accessから 値を取得しようとするとテーブル名とフィールド名に日本語を使っているときに以下の部分でエラーになります。 テーブル名とフィールド名には日本語を使いたいのですがどのようにすればよいでしょうか? String sql = "SELECT * FROM 整理" ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ int no = rs.getInt("番号"); } テーブル名とフィールド名を英語にしたらエラーは消えました。

  • データアクセスページを利用してDBを更新するには?

    みなさん初めまして。この度業務上の要求からwin2000+アクセス2000でDBを作成し、そのデータをブラウザから閲覧・更新するシステムを作成しなければなりません。初心者ながら作成してみたものの、閲覧は出来ても更新(入力)が出来ません 。何が問題なのか、どなたか教えていただけないでしょうか? テーブル1(メイン)  ID・・・オートナンバー、主キー  品名・・・テキスト型、テーブル2の種別フィールドをルックアップ  用途・・・テキスト型、テーブル3の用途フィールドをルックアップ  購入方法・・・テキスト型、値リストからルックアップ  日付・・・日付型 テーブル2(ルックアップ用)  種別・・・テキスト型、主キー テーブル3(ルックアップ用)  用途・・・テキスト型、主キー 以上が簡素化したテーブル構成です。web上でルックアップを使用しているフィールドはドロップダウンで表示させています。  以上拙い文面で申し訳ありませんが、ご指導よろしくお願いします。