Accessを使ってデータベースを作成しています。

「テーブル1」があり、これには
名前ID
名前
入力日
チェック項目1
チェック項目2
  :
とあります。

これをもとに「検索クエリ」を作成しました。
検索クエリの項目は「テーブル1」とまったく同じですが、
すべてを検索するわけではないので
・名前ID
 「検索項目なし」
・名前
 「Like IIf(IsNull([Forms]![検索条件入力フォーム]![名前]),[氏名],'*' & [Forms]![検索条件入力フォーム]![名前] & '*')
・入力日
 「検索項目なし」
・チェック項目1
 「Like IIf(IsNull([Forms]![検索条件入力フォーム]![チェック項目1]),[チェック項目1],[Forms]![検索条件入力フォーム]![チェック項目1])」
・チェック項目2
 ※上記と同じ。
  :
としてあります。

この「検索クエリ」をもとに「検索条件入力フォーム」を作成してあります。
名前の欄に「田中」と入力すれば、「田中」がつく人がすべて検索されるというようなカンジになっています。

「テーブル1」に空欄があり、その場合に、検索がうまくいきません。
「検索クエリ」のところですべてに条件を入れればいいのですが、フォームに全てが入っていないので。。。
やはりフォームに「テーブル1」の項目すべてを含め、クエリで条件を入れるべきでしょうか?
これが今考えている中では一番手早いようなカンジがするのですが、どうしてもあまりスマートなやり方ではないような気がして。。。
これしかないのであれば、これでやりますが、他にいい方法があれば、教えていただけないでしょうか?

あまり上手な文章ではないので、補足要求があれば補足します。
宜しくお願いします。

Ac2000です。

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

A 回答 (8件)

また、間違えました。


なにぶん、実際に書いてないもんで。
チェック欄のところを以下のように修正して下さい。

'[チェック欄]
Select Case Me!fraチェック欄.Value
  Case 1  '全て
    '何もしない
  Case 2  'チェック欄あり
    condCheck = "(テーブル1.チェック欄 =" & True & ")"
    wherecond = wherecond & "and " & condCheck
  Case 3  'チェック欄なし
    condCheck = "(テーブル1.チェック欄=" & False & ")"
    wherecond = wherecond & "and " & condCheck
End Select

元のコードだと、チェック欄[全て]を選択すると、WhereCondの末尾に" AND "が余分についてしまい、構文エラーになってしまいます。
これで大丈夫だと思います。(ちょっと不安)
では。

この回答への補足

すいません、大丈夫じゃなかったです(^^;
名前を入れないでチェックあり(なしも)の場合にエラーが出てしまいます!
名前さえ入れれば3つのどれでも大丈夫なのですが。。。

------------------------
実行時エラー '3075';

クエリ式'テーブル1.チェック欄=True)'の不要な')'があります。
------------------------
です。

どこを直せばいいのでしょうか?

補足日時:2002/04/05 13:15
    • good
    • 0
この回答へのお礼

できました!!
ありがとうございます!!
これでやっと。。。と思ったのですが、更に更に質問してもよろしいでしょうか?

今まで文字を入れる検索フォームはテキストボックスかチェックボックスかラジオボタンでしたよね。
コンボボックスなんていうのはどのようにやるのでしょうか?
テキストボックスと同じようなカンジではもちろんエラーですよね?

何度もすいませんが、宜しくお願いします。。

お礼日時:2002/04/05 13:12

まだ締め切っていないようですので。



>チェック欄のところで、両方検索できない、とありますが、
>これの両方を検索する方法というのはあるのでしょうか?

検索条件入力フォームで、条件入力をチェックボックスで行うと、チェックした・しないの2種類しか判定出来ません。
したがって、必要な判定基準の数だけオプションボタンを作ります。

やり方(知っている部分は飛ばして下さい。)

・まず、フォームにオプショングループ(フレーム)を配置する
・ツールボックスのオプションボタンをクリックして選択状態にする
・マウスポインタ(フォーム上ではオプションボタンの形になる)をそのフレームの上に持っていくと、フレーム内が反転表示される
・そのままフレーム内にドラッグしてオプションボタンを配置する
・あと2つ、同様にオプションボタンをフレーム内に配置する
・これで、オプションボタンが3つグループ化されました。グループ化されているオプションボタンは、常にグループ内で1つしかチェック出来ません。(他のボタンを選択すると元のボタンは自動的にチェックが外れます。)
・オプションボタンにはオプション値というプロパティがあり、これでどのオプションボタンがチェックされているか判定します。
・この値はオプションボタン自身ではなく、グループ化しているフレームのValueプロパティで設定したり、取得したりします。
・オプションボタンとセットになっているラベルコントロールのキャプションを、分かり易く変えます。
例)
オプション値1・・・"全て"
オプション値2・・・"チェック欄あり"
オプション値3・・・"チェック欄なし"
・フレームの既定値プロパティにどれかのオプション値の値を設定します。これで、フォームが立ち上がった直後のとりあえずチェックされているオプションボタンを設定出来ます。
・コードのチェック欄の部分を以下のように変更します(フレームの名前は[fraチェック欄]とします)

'[チェック欄]
Select Case Me!fraチェック欄.Value
  Case 1  '全て
    condCheck = ""
  Case 2  'チェック欄あり
    condCheck = "(テーブル1.チェック欄 =" & True & ")"
  Case 3  'チェック欄なし
    condCheck = "(テーブル1.チェック欄=" & False & ")"
End Select
wherecond = wherecond & "and" & condCheck

これで、[全て]を選べばチェック欄の有無両方とも、[チェック欄あり]でチェック欄がTrueのもの、[チェック欄なし]でチェック欄がFalseのものを抽出出来ます。
がんばって下さい。
では。

この回答への補足

No.8に対する2度目の補足です。
(見ていただけるかどうか・・・)

すいません、こちらのミスでした!
ちゃんとできました。

補足日時:2002/04/05 13:23
    • good
    • 0
この回答へのお礼

何度もご登場いただき、ありがとうございます。。。

試してみました。
できました!やったー!!
と思ったのも束の間!
名前欄に「持田」と入れて、チェック欄を「全て」で検索すると
--------------------
実行時エラー'3075';

クエリ式'(テーブル1.名前 like '*持田*')and' の構文エラー : 演算子がありません。
--------------------
と出てしまうんです。

名前に何もいれずにチェック欄を「全て」にすればきちんと検索結果が出るし、
名前を入れて、チェック欄を「あり」「なし」にすると検索結果が出てきます。
なぜエラーが出てしまうのでしょうか?

以下がコードです。

--------------------
Private Sub コマンド8_Click()

Dim SQL As String
Dim wherecond As String
Dim condID As String
Dim condName As String
Dim condBirth As String
Dim condCheck As String

wherecond = ""

'[氏名ID]
If Me!氏名ID.Value <> "" Then
condID = "(テーブル1.氏名ID = " & CLng(Me!氏名ID.Value) & ")"
wherecond = wherecond & " and " & condID
End If

'[名前]
If Me!名前.Value <> "" Then
condName = "(テーブル1.名前 like '*" & Me!名前.Value & "*')"
wherecond = wherecond & " and " & condName
End If

'[誕生日]
If Me!誕生日.Value <> "" Then
condBirth = "(テーブル1.誕生日 = #" & Me!誕生日.Value & "#)"
wherecond = wherecond & " and " & condBirth
End If

'[チェック欄]
Select Case Me!fraチェック欄.Value
Case 1
condCheck = ""
Case 2
condCheck = "(テーブル1.チェック欄=" & True & ")"
Case 3
condCheck = "(テーブル1.チェック欄=" & False & ")"
End Select
wherecond = wherecond & "and " & condCheck

wherecond = Mid(wherecond, 6)

DoCmd.OpenForm "検索結果フォーム", acNormal, , wherecond

End Sub
--------------------

申し訳ありませんが、もう一度ご教授願えませんか?
宜しくお願いします。

お礼日時:2002/04/05 11:00

もうひとつ気になったので。


各条件の
wherecond = wherecond & "and" & condName
でandの前後に半角スペースはちゃんと入ってますか?
では。

この回答への補足

追加で質問してもよろしいでしょうか??

チェック欄のところで、両方検索できない、とありますが、
これの両方を検索する方法というのはあるのでしょうか?

お時間あるときで結構ですので、もし方法がありましたらお教えください。

宜しくお願いします。

補足日時:2002/04/04 17:34
    • good
    • 0
この回答へのお礼

あっ!入っていなかったです!
これをやったら、下のエラーも解消しました!

本当に本当にありがとうございました!
やっと完成しました。

なんと言ったらいいかわからないくらいお世話になりました。
貴重な時間を割いていただいて、本当に感謝しています。
ありがとうございました!!

お礼日時:2002/04/04 17:32

間違えました。



DoCmd.OpenForm 検索結果フォーム, acNormal, , wherecond

DoCmd.OpenForm "検索結果フォーム", acNormal, , wherecond
にして下さい。
(フォーム名は文字列を指定しないといけないのでダブルクォーテーションで括らないとダメでした。)
Dim condNameを削除した件はもちろんOKです。(私の間違い)
では。
    • good
    • 0
この回答へのお礼

ありがとうございます。無事解消しました。
が!また新たにエラーが!!

名前のところに「持田」と入れてボタンをクリックすると
--------------------
実行時エラー'3075';

クエリ式'ーブル1.名前 like '*持田*')and(テーブル1.チェック欄=False)'の不要な')'があります。
--------------------
と出てしまうのです。

これは一体どこのことでしょうか?

お願いします。。。

お礼日時:2002/04/04 17:28

三度maruru01です。



順番にいきます。ちょっと修正もあります。

Dim SQL As String
Dim WhereCond As String
Dim condName As String
Dim condID As String
Dim condName As String
Dim condBirth As String
Dim condCheck As String

WhereCond = ""  '変数の初期化。本当はいらないけど明示的に

'氏名ID(検索条件入力がテキストボックスとする)
'ちなみにテーブル1の氏名IDは長整数型でないといけません。
If Me!氏名ID.Value <> "" Then
  condID = "(テーブル1.氏名ID = " & CLng(Me!氏名ID.Value) & ")"
  WhereCond = WhereCond & " AND " & condID
End If
'CLngでテキストボックスの内容を長整数型に変換

'名前(検索条件入力がテキストボックスとする)
If Me!名前.Value <> "" Then
  condName = "(テーブル1.名前 LIKE '*" & Me!名前.Value & "*')"
  WhereCond = WhereCond & " AND " & condName
End If
'あいまい検索なのでLIKEとワイルドカード(*)を使用
'テキスト型なので、"'"(シングルクォーテーション)で括らないといけない

'誕生日(検索条件入力がテキストボックスとする)
'このテキストボックスには、"2002/1/2"など、日付と認識出来る文字列でないといけない
If Me!誕生日.Value <> "" Then
  condBirth = "(テーブル1.誕生日 = #" & Me!誕生日.Value & "#)"
  WhereCond = WhereCond & " AND " & condBirth
End If
'日付型なので、"#"で括らないといけない

'チェック欄(検索条件入力がチェックボックスとする)
If Me!チェック欄.Value = True Then
  condCheck = "(テーブル1.チェック欄 = " & True & ")"
Else
  condCheck = "(テーブル1.チェック欄 = " & False & ")"
End If
WhereCond = WhereCond & " AND " & condCheck
'ちなみにこの場合だとチェックがある人とない人を両方検索することは出来ない

'この時点で、WhereCondは必ず先頭に" AND "の5文字があるので、Mid関数で6文字目以降を取り出す
WhereCond = Mid(WhereCond, 6)

'[検索結果フォーム]を開く
DoCmd.OpenForm 検索結果フォーム,acNormal,, WhereCond
'なお、予めテーブル1をソースにした[検索結果フォーム]を作成しておく
'フォームの作成は普通に新規作成で、最初の"基になるテーブル"にテーブル1を選択して行えばいいです


これらを例えば検索条件入力フォームの[検索]コマンドボタンのClickイベントに書けばOK
では。
    • good
    • 0
この回答へのお礼

たびたびありがとうございます。
maruru01さんがおっしゃったとおりに以下の用に記入してみました。

Private Sub コマンド8_Click()

Dim SQL As String
Dim wherecond As String
Dim condID As String
Dim condName As String
Dim condBirth As String
Dim condCheck As String

wherecond = ""

'[氏名ID]
If Me!氏名ID.Value <> "" Then
condID = "(テーブル1.氏名ID = " & CLng(Me!氏名ID.Value) & ")"
wherecond = wherecond & "and " & condID
End If

'[名前]
If Me!名前.Value <> "" Then
condName = "(テーブル1.名前 like '*" & Me!名前.Value & "*')"
wherecond = wherecond & "and" & condName
End If

'[誕生日]
If Me!誕生日.Value <> "" Then
condBirth = "(テーブル1.誕生日 =#" & Me!誕生日.Value & "#)"
wherecond = wherecond & "and" & condBirth
End If

'[チェック欄]
If Me!チェック欄.Value = True Then
condCheck = "(テーブル1.チェック欄 =" & True & ")"
Else
condCheck = "(テーブル1.チェック欄=" & False & ")"
End If
wherecond = wherecond & "and" & condCheck

wherecond = Mid(wherecond, 6)

DoCmd.OpenForm 検索結果フォーム, acNormal, , wherecond

End Sub

------------------------------
Dim SQL As String
Dim wherecond As String
Dim condID As String
Dim condName As String
Dim condBirth As String
Dim condCheck As String
に「Dim condName As String」が二つあったので、独断で消してしまったのですが大丈夫でしょうか?


以上をクリック時のイベントプロシージャにかきこみ実行を行うと
--------------------
実行時エラー ‘2494’;
このアクションまたはメソッドを実行するには、[Form Name/フォーム名]引数が必要です。
--------------------
と出てしまうのです。
どこが間違っているのでしょうか?

テーブル1の
氏名ID「数値型[長整数型]]
もちゃんとなっているようなのですが。。。

何度も何度も本当にすいません。

お礼日時:2002/04/04 17:12

再びmaruru01です。



・・・以下略
のところは、変数(私が勝手に作りましたが、任意に付け直して下さい)の宣言をして下さい。全てStringです。
SQLステートメントは、クエリのデザインモードでメニューの[表示]→[SQLビュー]で見られるもの同じです。
ただし、文末の";"(セミコロン)は要りません。
また、改行しているところは、半角スペースでつなげます。
あと、名前はあいまい検索なので、LIKE演算子と*(ワイルドカード)を使用しています。(また、文字列なので、"'"(シングルクォーテーション)で括っています。)
これが例えば、名前IDが数値型(長整数)なら、
condID = "(テーブル1.名前ID = " & CLng(Me!名前ID.Value) & ")"
となります。
これらをANDでつなげると、(先頭の" AND "は取る)
WhereCond = "(名前IDの条件式) AND (名前の条件式) ・・・"
という風になります。

その後は、検索(抽出)結果をどうするのかによります。

結果フォームを開いて結果を表示するなら
DoCmd.OpenForm フォーム名, acNormal,, WhereCond

すでにテーブル1を元にしたフォームを開いているなら
Forms!フォーム名.Filter = WhereCond
Forms!フォーム名.FilterOn = True
これでフォームにフィルタを適用する

結果テーブルを新たに作るなら
SQL = "SELECT * INTO 新テーブル名 FROM テーブル1・・・"
DoCmd.RunSQL SQL

などなどです。
詳細はVBEの画面からヘルプを開いて、"SQL"などで検索して下さい。
では。
    • good
    • 0
この回答へのお礼

再びありがとうございます!

今実際のもので試すのが怖いので(汗)試しに簡単なものをつくって試しています。
「テーブル1」
・氏名ID[数値型]
・名前[テキスト]
・誕生日[日付]
・チェック欄[Yes/No]

となっています。
これから抽出するために検索フォームの実行ボタンに、maruru01さんから教えていただいたものを入力しているところですが、

Dim SQL As String
Dim WhereCond As String
Dim condName As String
Dim condID
Dim condName
Dim condBirth
Dim condCheck

'[氏名ID]
WhereCond = ""
If Me!氏名ID.Value = "" Then
condID = ""
Else
condID = "(テーブル1.氏名ID)" LIKE '*" & Me!氏名ID.Value & "*')"
WhereCond = WhereCond & "AND" & condID
End If

WhereCond = Mid (WhereCond,6) <この「6」は??
SQL = "SELECT * FROM テーブル1"& "WHERE" & WhereCond

DoCmd.Run SQL SQL

DoCmd.OpenForm 検索結果フォーム,acNormal,, WhereCond

End Sub

のようになっています。

これに「名前」を付け加えるとしたらどこに入れたらいいんでしょうか?
同じように、

WhereCond = ""
If Me!名前.Value = "" Then
   :
と氏名IDのEnd Ifの下に続ければいいんでしょうか?

何度もすいませんが宜しくお願いします。

お礼日時:2002/04/04 15:54

こんにちは。

maruru01です。
私なら、クエリは作らず、コードで直接SQLステートメントを書いて実行します。
仮に[検索条件入力フォーム]に[検索]というコマンドボタンがあるなら、そのClickイベントに記述します。
そこで、検索条件(WHERE句)は、

Dim SQL As String
Dim WhereCond As String
Dim condName As String
Dim condID
・・・以下略

'[名前]項目は、
WhereCond = ""
If Me!名前.Value = "" Then
  condName = ""
Else
  condName = "(テーブル1.名前 LIKE '*" & Me!名前.Value & "*')"
  WhereCond = WhereCond & " AND " & condName
End If
'他の項目、condID、condDate、condCheck1、condCheck2も同じ感じで
'WhereCondの後ろに順番につなげていきます。
'先頭の" AND "を除きます。
WhereCond = Mid(WhereCond, 6)
'それで全体のSQLステートメントは
SQL = "SELECT * FROM テーブル1 " & _
   "WHERE " & WhereCond
'で、これを実行
DoCmd.RunSQL SQL

SQLステートメントは必要に応じて、INSERT文にしたり、INTO句をつけたりして下さい。
では。
    • good
    • 0
この回答へのお礼

すいません、SQLの知識がないのでよくわからないのですが、
これをこのまま入れてしまえばできるのでしょうか?

>Dim condID
>・・・以下略
のあとはどうすればいいのでしょうか?

すいませんが、宜しくお願いします。

お礼日時:2002/04/04 11:41

SQLを記述するのが正解ですが、クエリでも何とかなると思いますよ



1:クエリのフィールドに、
氏名条件:Nz([氏名])
という列を追加してください。

2:んで、この列の[表示]チェックボックスを外してください。

3:んで、氏名欄の抽出条件を切り取って、この列の抽出条件をに貼り付けてください

これで、検索条件入力フォームの氏名欄が空白のときは氏名での絞込みを(見かけ上)行わなくなるはずです。

ただし、速度的にはかなり低下します。
現実的には、冒頭に書いたようにSQLを使うのがいいですね。
過去の質問を検索すれば、SQLについてもある程度は使いこなせるようになるんじゃないかと思います。


PS.「検索がうまくいきません。」について、どううまくいかなかったのかが分からなかった為、半ば以上推測で回答しています(^^; (上記の解釈で合っているような気はするのですが(気のせい?))

「検索がうまくいきません。」ではなく例えば、
1:どんな結果が出て来てしまうのか。
2:どんな結果が出て来て欲しいのか。
ってな感じで補足していただけると、更なる回答がつくかもしれませんね。

この回答への補足

回答ありがとうございます。

このような方法があるんですね、初めて知りました。
>3:んで、氏名欄の抽出条件を切り取って、この列の抽出条件をに貼り付けてください

とあるのですが、例えば、上記の例ですと、「氏名ID」のクエリーの抽出条件欄には何も入っていないことになるのですが、
この場合はどうしたら・・・?

なんだか自分が勘違いしているような気になってきたのですが、、宜しくお願いします。

>PS.「検索がうまくいきません。」について、どううまくいかなかったのかが分からなかった為、半ば以上推測で回答しています(^^; (上記の解釈で合っているような気はするのですが(気のせい?))

はい、すいませんでした。
「検索がうまくいきません」とは、「検索を行った場合に空欄があるものが検索した時に出てこない」といえばわかっていただけますでしょうか?
すべての項目が入っていればいいのですが、入っていないと、検索をかけてもないものとして扱われてしまっているようで。。。
例えば、氏名IDに何も入っていなくて、でも「田中」という名前の人のデータが入っていた場合に、名前で「田中」で検索してもその人は検索結果に反映されないのです。
わかっていただけましたでしょうか??

また何かありましたら補足要求してください。

宜しくお願いしますm(_ _)m

補足日時:2002/04/04 08:39
    • good
    • 0

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

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

関連するカテゴリからQ&Aを探す

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

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

Q[Oracle][IBM DB2][SQL Server]の違いと適性

現在、Accessで業務アプリケーションを作成しているのですが、そろそろパフォーマンス的にも限界で、というかC/S環境でAccessを使っていること自体危険ですね…

ここでデータベースをグレードアップしようと思っています。
しかし、データベースと言ってもたくさんあり、どれがいいのか
迷っています。

現在、商用RDBMSでは[Oracle][IBM DB2][SQL Server]がメインとの
ことですが、これらの違いが分かりせん。

うちの規模は社員数が40人程度です
Oracleは大規模システム向けと聞いた事があるのですが、
それであれば、IBM DB2かSQL Serverなのでしょうか

御教授宜しくお願いします。

Aベストアンサー

SEじゃないですけど、現状でどの辺りがボトルネックになっているかまず分析する必要がありますよ、案外ハード(サーバー本体)の方がいっぱいいっぱいてこともありますから、仮にHDDのディスクアクセスの場合シリコンディスクに置き換える、メインメモリの増設などがあります。逆にソフト側(MSアクセス)で同時接続多・同時更新多・データ肥大化の場合はやはりDBエンジンを変更するしかないでしょう。自社で開発するなら(情報量の多い)SQLServer。外注の場合は先方によって得手不得手がありますので一概には言えませんがオラクルでしょうこれしかないです(規模は関係なし)。DB2は使ったことがありません。他にもたくさんデータベースエンジンがありますので・・・

参考URL:http://ja.wikipedia.org/wiki/関係データベース管理システム

Q「[Microsoft][ODBC SQL Server Driver]COUNT フィールドが正しくありません。」えらーについて

おせわになります、

JavaからMSDEに対してSELECT UPDATE等の処理を行っているのですが。以下のSQLエラーが出てしまいます。
どのような意味なのでしょうか?
雰囲気としてはUPDATE文でおこっているような感じなのですが…

----エラーメッセージ------
[Microsoft][ODBC SQL Server Driver]COUNT フィールドが正しくありません。

よろしくお願いします。

Aベストアンサー

こんな情報がありましたという報告です。

「COUNT フィールドが正しくありません。」
で、検索をしたら同じような事例がありました。

2件ほどヒットしたのですが、どちらもテーブルのフィールド名を英数字にすることで解決しているようでした。

何故かというのは私にもわかりません。
お役に立つと良いのですが・・・

ちなみにヒットしたのは、「Goo」と「Google」です。
一度調べてみてください。(個人の情報っぽいのでURLは載せません。)

Q[Access2003]クエリのカスタム書式

◎クエリのカスタム書式が分からないです。
参考書(下記のフィールド名や入力データ名や書式プロパティは、著作権の関係もあり、名前を変えてあります。)
●例えば、「氏名」フィールドのセレクタをクリック→プロパティをクリック→書式プロパティ:「@\殿」と設定します。例えば、「東京太郎」と入力したものが…..→「東京太郎殿」の表示結果になります。
☆殿の前の「@」や「\」は、何でつける必要があり、「@」や「\」は、それぞれ、何を表してしますか?

*Access初心者なので簡潔に教えてくださったら助かります。

Aベストアンサー

対象がフォームかクエリかの違いはありますが、内容としては以下の質問と
かぶりますので、同時に説明させていただきます:
(私の説明で理解できましたら、そちらの質問は削除依頼を出して戴けたら
 と思います:
 もちろん、納得できなかった場合は、その限りではありません(汗))
http://oshiete1.goo.ne.jp/qa4899074.html


◎「\」および「"」について:

> \ 次の文字をそのまま表示します。文字をニ重引用符で囲んでも同じです。
(http://office.microsoft.com/ja-jp/access/HA012327501041.aspx
 から抜粋。フォームなどのプロパティシートの『書式』にカーソルをおいた
 状態でF1キーを押してヘルプを表示させても同様の内容が見られます)

つまり、『書式』プロパティでの「\殿」或いは「"殿"」という指定は、ともに
『「殿」という字をそのまま表示させる』、という意味になります。
(但し、「\」は後続文字が1文字の場合、「"」(二重引用符)は複数文字に対応し、
 Access2003では文字数に合わせて自動的に「\」と「"」が変換されるようです)


◎「@」について:

> @ 文字が存在する場合はその文字を、文字が存在しない場合は空白を表示します。
(http://office.microsoft.com/ja-jp/access/HA012327471041.aspx)

・・・と説明されていますが、では実際に『書式』プロパティに「@」なしで
「\殿」にしたら、フィールドやテキストボックスの値が表示されず「殿」だけに
なるかと思ってやってみると、そうはなりませんでした(汗)
(記録されたデータのみが表示され、「殿」の字は出てこない)

どちらかというと、「@」は、「記録されているデータと、書式で追加する
文字との、位置関係を指定するための記号」と言った方が実情に合っている
ように思います。

つまり、「佐藤」というデータが入っている状態で、書式プロパティが
「@\殿」なら「佐藤殿」となり、同じく「\殿@」なら「殿佐藤」になる、
ということです。



・・・以上、簡潔ではありませんが(汗)、参考まで。

対象がフォームかクエリかの違いはありますが、内容としては以下の質問と
かぶりますので、同時に説明させていただきます:
(私の説明で理解できましたら、そちらの質問は削除依頼を出して戴けたら
 と思います:
 もちろん、納得できなかった場合は、その限りではありません(汗))
http://oshiete1.goo.ne.jp/qa4899074.html


◎「\」および「"」について:

> \ 次の文字をそのまま表示します。文字をニ重引用符で囲んでも同じです。
(http://office.microsoft.com/ja-jp/access/HA012327501041.as...続きを読む

Q[Access2000]アクションクエリでお尋ねします。

テーブル名は Table
フィールド名は Filed で

Filed 内には abc_uvw、def_xyz のように "_" で仕切られた文字列がはいっています。
そこで、次のようなクエリで "_"より後ろの値でFeildを書き換えようと思うのですが、

もともとのFieldの値がNULLである場合、その部分だけエラーになります。それ以外の値のはいっている部分に関してはエラーにならずに処理されますが、このエラーを回避する方法はないのでしょうか?

UPDATE Table SET Field = Mid([Field],InStr(1,[Field],"_")+1,Len([Field])-InStr(1,[Field],"_"));

Aベストアンサー

WHERE句でNULLデータを除外するのではだめなのでしょうか?

WHERE Table.Filed Is Not Null

Q(ACCESS)フォームデータシートの項目欄色の変更(チェックボックスの場合)

前回も投稿した内容の延長で申し訳ありませんが、ネットで色々調べても解決しなかったため、投稿しました。
フォーム(データシート形式)で各項目を投入できるようにしたのですが、項目数が多すぎて、優先順位を付けるために、項目欄に色付けをしようと考えています。
テキストボックスの欄は条件付書式で色指定すると色変更はできましたが、チェックボックスのある項目欄はプロパティを見ても、条件付書式がありません。他に色変更する方法は無いでしょうか?

Aベストアンサー

No.2です。

すみません、前回の回答はOfficeの入っていないPCだったため、検証していませんでした(汗)
確認したところ、確かに私のPCでも、miffy123さんの仰るとおりの現象になりました。

改めて検証したところ、どうやら値集合ソースの「True/False」が正しく認識されていないようで、
以下のように修正したところ、当初の意図通りの動作となりました:
 値集合ソース=「0;"□";-1;"■"」

デザインビューで上記プロパティを変更してから、データシートビューに切り替えてください。
(データシートビューのままで値集合ソースをいじると、その場では正しく認識されないようで、
 正しく認識させるには再クエリが必要でしたので)


なお、前回「値を削除するとエラーになる」としましたが、確認したところこれも間違いで(汗)、
実際にはエラーにはならず、False(=0)として扱われるようです。
ですので、更新後イベントは不要です。
これについてもお詫びの上、訂正します。
大変失礼致しました。


人気Q&Aランキング

おすすめ情報