教えてください。
アクセスSQLのwhere句の中で、’がもともとあるデータがあるのですが、
うまく実行できません。おそらく、終わりと認識されている?の加と思います。どうしたらいいのでしょうか?

update A set 'She's not busy' where C = 'She's busy';
このような場合です。
よろしくお願いします

このQ&Aに関連する最新のQ&A

A 回答 (2件)

クエリのSQLビューでしたら、



 Update A Set B = "She's not busy" Where C = "She's busy;"

を試してみてください。
(文字列のくくりに「'」(シングルクォート)ではなく「"」(ダブルクォート)を使用)
※構文的に更新対象フィールドが必要なはずと思い、「B=」を追加しました。


VBA画面での文字列の場合(「Update~」を括るのに既に「"」使用済み)は、
SQL文全体を括る分の「"」も含めて書くと、

 "Update A Set B = " & Chr(34) & "She's not busy" & Chr(34) & " Where C = " & Chr(34) & "She's busy" & Chr(34) & ";"

でいけるかと思います。
(Chr関数は、引数で指定された文字コードの文字を返します:「Chr(34)」は「"」に相当)
    • good
    • 0

一応回答は出ているようですが・・・



もしも貴方がSQLを解析して実行するプログラムを作成すると考えてください

Accessではシングルクォートで囲まれたものを文字列とみなしますので
update A set 'She's not busy' where C = 'She's busy';
の場合、命令は update 対象テーブルは A セットすべきカラムは・・・
おっと、#1回答でもご指摘されているようにカラムがありませんねぇ
ここはカラムがあるものとして・・・
セットするのは'で始まっているので文字列 She' で終わりの'発見したので文字列はShe
次は s not busy' ・・・? 解析不能となるわけです。

AccessのSQLで文字列はシングルクォート、ダブルクォートのどちらを使ってもかまわないので
文字列中にシングルクォートやダブルクォートを含む場合、含まない方を使って囲むと良いです。
また、囲む文字を文字列中に含めたい場合、2個連続するものは1個の文字として判断します。
なので 'She's busy' -> 'She''s busy' こう書けば
She's busy の文字列だと判断してくれます。

VBAでSQLを記述する場合は文字列として""で囲みますし
AccessやSQL Serverではカラム名が特殊文字や予約語の場合
カラム名を[]囲むことになりますが、Oracleでは""を使いますので
SQL上の文字列は'で囲むのが一般的です
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q読点とカンマの違い

「読点」の意味を辞書で引いたら下のようにでていたのですが、今ひとつよく意味が解りません。英語のカンマとはどう違うのか説明してほしいんですが。


味の切れ目を示すため、文中に施す「、」の符号。→句点

お願いします。

Aベストアンサー

「味の切れ目」→「意味の切れ目」ですね。(^^)

で,既に出ている回答とも重なりますが,日本語でも横書きの場合はカンマを使うことがあります。特に数字やアルファベットのあとに読点が来ると何となく間が抜けてみえるので,数字や欧文を多用する理工系の図書や雑誌などに多く見られます。
この文章もそのスタイルで書いています。なので,farsideさんの前の質問(http://oshiete1.goo.ne.jp/kotaeru.php3?q=98303)の回答で「今も使っていません。」と断言されてしまうと,私が書いているのは一体何なの?と,ちょっと困ってしまいます。
あ,よく見ると「正式な日本語の文章にカンマはありません。」でしたね。正式じゃないからいいのか。でも,それなら正式な日本語って何? 理工系の図書や雑誌は大多数が正式じゃないってこと? 「公用文の書き方」(という政府の内部規定)が正式? じゃ民間の文章はみんな正式じゃないのか? よくわからなくなってきました。

話を戻しますと,横書きの日本語でカンマを使うか読点を使うかは,単にその図書なり雑誌なりの出版社が編集方針として決めているだけのことで,機能的には従来からの読点と何ら変わりがありません(数値の区切りとかは別)。
では,その日本語本来の読点と,英文のカンマはどう違うかというと…基本的には,文(センテンス)の中に打って,意味上の切れ目を示すわけですから,似たようなものといってよいでしょう。
ただ,細かく見ていくと,そもそも英文法と日本語文法が違いますので,比較のしようがなくなってくると思います。たとえば,英語では関係節と主節を区切る時に使いますが,日本語ではそもそも関係代名詞がありませんね。

英語のカンマの打ち方は,文章のルールブックというのがいろいろとあって,それを見ると出ています。代表的なものとして,Chicago Manualの中から該当のページを参考URLに載せておきました。カンマの打ち方だけで,全部で27項目あります。

ちなみに,中国語では読点(、)は並列を表し(日本の中黒「・」のような使い方),それ以外はすべてカンマです。横書きでも縦書きでも一緒です。
日本語で書くとこんなふうになるでしょうか。「私は,彼女と一緒に,京都、奈良、大阪、神戸を旅して回った。」

参考URL:http://www.publicbookshelf.com/public_html/Manual_of_Style/commarule_i.html

「味の切れ目」→「意味の切れ目」ですね。(^^)

で,既に出ている回答とも重なりますが,日本語でも横書きの場合はカンマを使うことがあります。特に数字やアルファベットのあとに読点が来ると何となく間が抜けてみえるので,数字や欧文を多用する理工系の図書や雑誌などに多く見られます。
この文章もそのスタイルで書いています。なので,farsideさんの前の質問(http://oshiete1.goo.ne.jp/kotaeru.php3?q=98303)の回答で「今も使っていません。」と断言されてしまうと,私が書いているのは一体何なの?と...続きを読む

Q「SELECT ~  FROM テーブル名」の後に続く句は「WHERE句」と「ORDER BY句」以外にありますか?

最近アクセスのSQL文を学びました。

選択クエリのSQL文で
「SELECT ~  FROM テーブル名」
の後に続く句は
「WHERE句」と
「ORDER BY句」以外にありますか?

よろしくお願いします。

Aベストアンサー

#1 さんの回答に補足です。

>FROM tableexpression [, ...]

複数テーブルの結合は、このヘルプに書かれているように

FROM TBL_A , TBL_B

のようにも書けますがレガシーな表記です。
Mictosoft Jet SQLではむしろ、以下のANSI表記が使われます。

INNER JOIN ~ ON
LEFT JOIN ~ ON
等。

こんな感じです。

FROM TBL_A INNER JOIN TBL_B
ON.TBL_A.カラム = ON.TBL_B.カラム

クエリデザイナで作成したクエリをSQLエディタで見るとわかります。

Q電卓 パソコン カンマの位置の違い

999円以上の数字を打つときにパソコンと電卓とで不思議に思うことがあります。

例えば「1000」と表記する時に
千の位と百の位の間の下に「,(コンマ)」を入れて
「1,000」とするようですが
なぜ電卓では上にコンマを入れるのでしょうか?
(私が保有している電卓だけなのか?)

電卓では
区切り点と小数点を見やすくするためですか?
しかしもしそうなら
なぜ電卓だけで、普段のパソコンなどでの書式は
区切り点と小数点も下に点をつけるのでしょうか?

 何かわかる方よろしくお願いします。

Aベストアンサー

> なぜ電卓では上にコンマを入れるのでしょうか?

・日本(アメリカ、イギリス)では、3桁ごとの区切りは「,」カンマ、小数点は「.」ピリオドが使われています。
ところが、ヨーロッパ圏を主体に、日本とは逆の3桁ごとの区切りは「.」ピリオド、小数点は「,」カンマが広く使われています。

近年、インターネットオークションなどで、桁取りや少数点でトラブルが多発するようになりました。
そこで、2003年10月17日にフランスのパリで行われた国際度量衡(どりょうこう)総会(CGPM)で、小数点を統一するための会議が行われました。

この国際会議で決定されたのが、なんと、なんと、、、
・「小数点は、ピリオドまたはコンマのどちらでもOK」と決められました。
・その代わり「3桁ごとの位取りはスペースを用いる、または、無し」となりました。

例: 123 456 789.012(ピリオド) または 123 456 789,012(コンマ) と定められました。


第22回国際度量衡総会決議(PDF)
http://www.intermet.jp/metric/22ndCGPM.pdf
原文
http://www1.bipm.org/jsp/en/ViewCGPMResolution.jsp?CGPM=22&RES=10

=ご質問に係わる要約=(上記PDFの7ページ)
2003年、第22回国際度量衡総会において、小数点は「小数点は、ピリオドかコンマのどちらかとする」と決められました。
3桁区切りは、3桁ごとに空白を入れて読みやすくするのは構わない。
しかし、混乱を避けるため3桁区切りに「コンマやピリオド」を使ってはならないと規定されています。

そこで、2003年以降の電卓では、従来の位置に3桁区切り「コンマ」を使うことが出来なくなったため、電卓メーカーは、苦肉の策としてzxdaeg様のご質問の通り、上部に印(マーク)を付けています。

添付写真の通り、古い電卓では、従来の位置に3桁区切り記号があります。

> なぜ電卓では上にコンマを入れるのでしょうか?

・日本(アメリカ、イギリス)では、3桁ごとの区切りは「,」カンマ、小数点は「.」ピリオドが使われています。
ところが、ヨーロッパ圏を主体に、日本とは逆の3桁ごとの区切りは「.」ピリオド、小数点は「,」カンマが広く使われています。

近年、インターネットオークションなどで、桁取りや少数点でトラブルが多発するようになりました。
そこで、2003年10月17日にフランスのパリで行われた国際度量衡(どりょうこう)総会(CGPM)で...続きを読む

QAccessVBA SQLのWHERE句について

こんにちは!
テーブルAのBフィールドの中に以下のデータがあるとき(昇順です)
1,2,5,6,12....
3という数値を得たいです。
3,4がフィールドに含まれる場合は、7です。
数字がバラバラなので、データを新規追加した時に穴埋めをしていきたいのです。
データの登録した順番は関係ないものとして、どのように実現できますでしょうか?
ORDERでデータを取ってきて、ループするしかないのでしょうか・・・?
特殊な例ですみませんが、宜しくお願い致します。

Aベストアンサー

tab1:

ID
1
2
4

クエリ1:

SELECT tab1.ID, DBLookup("ID","Tab1","ID>" & [ID],0) AS NextID
FROM tab1;

[イミディエイト]
? DBLookup("ID+1", "クエリ1", "(NextID-ID)>1")
3

簡単なのは[クエリ1]で、現行の値を次の値を発生させること。
で、その差が1以上の時の値+1が空番号。

Public Function DBLookup(ByVal strField As String, _
             ByVal strTable As String, _
             Optional ByVal strWhere As String = "", _
             Optional ByVal ReturnValue = "") As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim strQuerySQL As String
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  strQuerySQL = "SELECT " & strField & " FROM " & strTable
  If Len(strWhere) > 0 Then
    strQuerySQL = strQuerySQL & " WHERE " & strWhere
  End If
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

tab1:

ID
1
2
4

クエリ1:

SELECT tab1.ID, DBLookup("ID","Tab1","ID>" & [ID],0) AS NextID
FROM tab1;

[イミディエイト]
? DBLookup("ID+1", "クエリ1", "(NextID-ID)>1")
3

簡単なのは[クエリ1]で、現行の値を次の値を発生させること。
で、その差が1以上の時の値+1が空番号。

Public Function DBLookup(ByVal strField As String, _
             ByVal strTable As String, _
             Optional ByVal strWhere As String = "", _
     ...続きを読む

Q英文中のカンマの使い方について

英文の中で、so の前のカンマが有るのと無いのがありますが、なぜですか?違いは何ですか?

全般的に、カンマの打ち方、法則みたいのがあれば教えてください。

宜しくお願いします。

一応自分でも調べてみたのですが、難しい説明でしたので、・・・簡単に解説していただければ幸いです。

Aベストアンサー

「だから」のような意味の時はコンマを使うことがあります。しかし、法則という程のものはありません。so が very のような「とても」という意味になる時はコンマは使いません。very good, so good 、どちらもコンマは使いません。

Q実行時エラー'-2147467259(80004005)':

エクセルからADOでアクセスに繋ごうとしたときに
実行時エラー'-2147467259(80004005)':
マシン'マシン名'のユーザー'Admin'がデータベースを開けない状態、またはロックできない状態にしています。

というエラーが出てしまいます。

書いているコードは以下です。

Public cn As ADOdb.Connection
Set cn = New ADOdb.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb"



test.mdb自体はテーブルもクエリもフォームも何も開いていない状態です。
一度アクセスを終了させて再起動させればうまくできるのですが、何が原因でこのメッセージが出るのでしょうか?
もしわかれば教えてください。
よろしくお願いします。

Aベストアンサー

Accessで、test.mdbを開いた状態(テーブルも、クエリも、フォームも何も開かない状態)で、ExcelからADOで接続しようとすると、
「-2147467259"は既に使用されているので、使用できませんでした。」
というエラーが再現されました。(当方Office2000Pro)
そういうものなのでしょう。
何をなさりたいのですか?
AccessからExcelを起動して、データの移し替えをしたり、レポート代わりに印刷させたりという方法ではダメなのでしょうか?
何をしたいかという、切り口で質問をされてはいかがですか。

Q",which"と"which"の違いとは

関係代名詞の”,Which”とカンマのないWhichの違いとは何なんでしょうか。よく理解できていないので、教えてください。お願いします。

Aベストアンサー

(1)which:限定(制限)用法
(2), which:非制限用法
と呼びます。

前者は、一般に先行詞を「限定」するために、後者は先行詞に「追加情報」を与えるために用います。

よく使う例ですが
(1)Tom has three pens which look very expensive.
(2)Tom has three pens, which look very expensive.

(1)の方では、'pens'のうち、「高そうに見える」ものだけに話の対象を限定しています。

対して(2)の方では、トムの持っている'pens'に対して、それが「高そうに見える」という情報を付け加えています。

その結果生じる明確な違いは、
(1)の場合には、「3本の高そうなペン」以外に、「高そうではないペン」を持っている可能性があります。言い換えれば、(1)の文は「高そうなペン」の話しかしていない(限定している)ため、それ以外についてはわからないのです。

(2)の場合には、「トムは3本のペンを持っている」と言った上で「そのペンは高そうに見える」という情報を追加しているので、トムの持っているペンはその3本以外にはないという含みがあります。

(1)which:限定(制限)用法
(2), which:非制限用法
と呼びます。

前者は、一般に先行詞を「限定」するために、後者は先行詞に「追加情報」を与えるために用います。

よく使う例ですが
(1)Tom has three pens which look very expensive.
(2)Tom has three pens, which look very expensive.

(1)の方では、'pens'のうち、「高そうに見える」ものだけに話の対象を限定しています。

対して(2)の方では、トムの持っている'pens'に対して、それが「高そうに見える」という情報を付け加えています。
...続きを読む

QVBAの実行時エラー'2522'について

前任者がAccess2003により作成したデータベースがあります。
CSVデータを取り込む仕組みがあるのですが、下記のエラーが出て困っています。

実行時エラー '2522':
このアクションまたはメソッドを実行するには[File Name/ファイル名]引数が必要です。

どうやらVBAによるエラーだと判明しましたが、それ以上はよくわかりません。
以下のような構文になっています。

Option Compare Database
----------
Private Sub CSV取込_Click()
TextConv strFileName, "マスター定義", "T_マスター"
End Sub
----------
Sub TextConv(strFle, strInp, strTbl)
Dim strSQL As String
strSQL = "DELETE * FROM " & strTbl
If MsgBox("テーブルデータを更新しますか?", 4, "テーブル更新") = vbYes Then
CurrentProject.Connection.Execute strSQL
DoCmd.TransferText acImportDelim, strInp, strTbl, strFle, True
MsgBox "テーブルデータを更新しました"
End If
End Sub
----------
Private Sub 参照_Click()
Dim strFileName As String
strFileName = GetFileName()
If Len(strFileName) > 0 Then
Me.filepath = strFileName
Else
MsgBox "取込対象ファイルを選択してください! "
End If
End Sub

以上のようになっています。
デバッグを実行すると「strFle」の値がEmptyになっているのでここだとは思うのですが、どうしたらよいかわかりません。
どなたかお知恵をお貸し願えませんでしょうか。
宜しくお願いします。

前任者がAccess2003により作成したデータベースがあります。
CSVデータを取り込む仕組みがあるのですが、下記のエラーが出て困っています。

実行時エラー '2522':
このアクションまたはメソッドを実行するには[File Name/ファイル名]引数が必要です。

どうやらVBAによるエラーだと判明しましたが、それ以上はよくわかりません。
以下のような構文になっています。

Option Compare Database
----------
Private Sub CSV取込_Click()
TextConv strFileName, "マスター定義", "T_マスター"
End ...続きを読む

Aベストアンサー

Private Sub CSV取込_Click()
  TextConv Me.filepath "マスター定義", "T_マスター"
End Sub
でしょうか?

> Option Compare Database
の次に
Option Explicit
を追加すると、このようなエラーは発見しやすくなります。

VBEの画面で
[ツール] - [オプション] - [編集]タブで
「変数の宣言を強制する」にチェックを入れると
新しく作成するモジュールでは
自動で「Option Explicit」が挿入されるようになります。

Qこの問題、どうしてカンマ不要なのか?

次のような英作問題がありました。
二番目の問題で、「but の前には、カンマをつけよ」と模範解答にはありました。
一番目の問題では、「andの前」には、カンマがありません。
これはどうしてなのでしょうか。

■彼女は立ち上がって窓を開けました。(andを用いて)
She stood up and opened the window.

■私はとても疲れていましたが、母を手伝いました。
I was very tired, but helped my mother.

二つとも、前節と後節の主語は同じです。
二つとも、二つの文章を結びつけています。
一見、「違いはないじゃないか」と思いました。

私が考えた2つの文章の違いは、

◇一番目の文章は、立ち上がり→窓をあけるという一連の動作であること。
◇また、一番目の文章の方が、二番目の文章と比べると…まあ、短い。

よって、一番目のandの前には、カンマがつかないのかと思いましたが…。

しかし、自信がもてません。

アドバイスを、お願いいたします。

Aベストアンサー

この問題、どうしてカンマ不要なのか?
次のような英作問題がありました。
二番目の問題で、「but の前には、カンマをつけよ」と模範解答にはありました。
一番目の問題では、「andの前」には、カンマがありません。
これはどうしてなのでしょうか。

andやbutは、等位接続詞と言って、基本は2つの同等なものをつなぎます。
Tom and Mary are married.
名前と名前をつなぎ、同等なものを結んでいます。


■彼女は立ち上がって窓を開けました。(andを用いて)
She stood up and opened the window.
→この場合、upはついていますが、stoodとopenedという動詞を2つ結んでいます。
ここにカンマを入れることは可能ですが、
その場合、彼女が立ち上がり、それからーーと、ひと呼吸あるといいますか、少しそこに時間のずれを感じさせます。
She stoop up, and opened the window.はちょっと特殊な言い方となりますね。

■私はとても疲れていましたが、母を手伝いました。
I was very tired, but helped my mother.
→これはbe動詞と一般動詞という、同じ動詞でも、種類の違うものを結んでいます。
こういう場合、
1.I was [ very tired ] and [ ( I was ) helped ]
2.I [ was very tired ] and [ I ] helped.
という2つの解釈の可能性が生じてしまいます。
ところが、カンマを入れることにより、1ではなく、2だということになるのです。
この場合カンマを入れるべきです。

以上、ご参考になればと思います。

この問題、どうしてカンマ不要なのか?
次のような英作問題がありました。
二番目の問題で、「but の前には、カンマをつけよ」と模範解答にはありました。
一番目の問題では、「andの前」には、カンマがありません。
これはどうしてなのでしょうか。

andやbutは、等位接続詞と言って、基本は2つの同等なものをつなぎます。
Tom and Mary are married.
名前と名前をつなぎ、同等なものを結んでいます。


■彼女は立ち上がって窓を開けました。(andを用いて)
She stood up and opened the window.
→この場合、up...続きを読む

QWord起動時のエラー「実行時エラー'5'」

実家のPCのエラーのご相談です。
あと1時間ほどで帰宅するのでその前にアドバイスをいただけると、、、

◆トラブル内容:

ワードを立ち上げようとすると
Microsoft Visual Basicのエラー表示がでます。
このエラーが出ないようにしたいのですが、
方法がわからず、お力添えをお願いします。

◆エラー内容:

実行時エラー'5':
プロシージャの呼び出し、または引数が不正です。

終了およびヘルプボタンのみ有効です。
ヘルプボタンを押すとヘルプの該当項目が表示されます。


◆ヘルプの内容:

プロシージャの呼び出し、または引数が不正です。(Error 5)
呼び出しの一部が完成できません。エラーの原因と対処方法を次に示します。

引数が許容値の範囲を超えている可能性があります。たとえば、Sin 関数で扱える値の範囲は決まっています。2,147,483,648 未満の値は有効ですが、2,147,483,648 ではエラーになります。
引数に指定できる値の範囲を確認します。

現在のプラットフォームで無効のプロシージャを呼び出そうとするときにも、このエラーが発生します。たとえば、Microsoft Windows または Macintosh のみで使用できるプロシージャなどがあります。
プロシージャについてのプラットフォーム固有の情報を確認します。

詳細については、目的の項目を選択して F1 キー (Windows) または Help キー (Macintosh) を押してください。

                          以上コピペ終わり


マクロで見たことのあるエラー表示ですが、エクセルマクロでは
デバッグで凌いだり、不要なマクロはモジュールの解放等と、多少の
対処法を学んだのですが、ワードマクロはまったく未経験でヘルプの内容も
理解出来ません。

親孝行の真似事でも出来れば、と質問致しました。
御力添えをお願いします。

実家のPCのエラーのご相談です。
あと1時間ほどで帰宅するのでその前にアドバイスをいただけると、、、

◆トラブル内容:

ワードを立ち上げようとすると
Microsoft Visual Basicのエラー表示がでます。
このエラーが出ないようにしたいのですが、
方法がわからず、お力添えをお願いします。

◆エラー内容:

実行時エラー'5':
プロシージャの呼び出し、または引数が不正です。

終了およびヘルプボタンのみ有効です。
ヘルプボタンを押すとヘルプの該当項目が表示されます。


◆ヘルプ...続きを読む

Aベストアンサー

これ・・・でしょうか?
http://support.microsoft.com/kb/267572/ja


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング