• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessにおける文字を代入する変数について)

Accessの文字変数についての質問

このQ&Aのポイント
  • Access2010でstring変数に文字を代入する方法と文字数の制限について教えてください。
  • データベースの購入者一覧フィールドの表示文字数が最大で255文字までと制限されていますが、実際には500文字まで必要です。この制限を回避する方法を教えてください。
  • 購入者一覧フィールドに表示される文字数の制限を回避する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.7

もしかして クエリ内のFirstが関係しているのかもと思ったのですが SQL FIRST関数 LAST関数は不安定 https://www.feedsoft.net/access/sql/sql54.html たとえば、以下のようにしてクエリで 式: MyJoin_zentai(5) として出したら800文字分のデータが出たりしませんか。 Public Function MyJoin_zentai(Buyer As Long) As String Dim strResult As String strResult = 800文字分のデータ MyJoin_zentai = strResult ' 戻り値をセットします。 End Function 出たら元のSQLの FirstをLASTにしてみるとかでしょか。

ankle
質問者

お礼

 kkkkkmさん、いつもお世話になっております。  クエリで「First(MyJoin_zentai([実購入者番号]))」のFirstを削除して「MyJoin_zentai([実購入者番号])」で実行したら、見事全部表示になりました。  大変助かりました。ありがとうございました。  kkkkkmさん、今後ともよろしくお願いいたします。

その他の回答 (6)

  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.6

> 購入者一覧フィールドに表示される文字数が255文字まで フィールド数は255だったと思いますが、フィールドに表示できる文字数は255なのでしょうか。255までしか表示できないとしたら、メモ型(確か2010ではメモ型だったと思います)だと255文字以上格納できるので、それをもとにしたクエリで内容が表示できないという事になってしまいます。 String変数も255文字以上格納できると思いますから strResult = "あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああい" でエラーにならなければ 、何か別の所で制限を受けているのではないでしょうか。

ankle
質問者

補足

 kkkkkmさん、いつもお世話になっております。  モジュールのイミディエイトウィンドウで確認してみると、「strResult」には表示したい約800文字が全部代入になっています。  ただ、これをクエリで表示すると、255文字までとなってしまうのが現状です。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.5

締め切る積りでしたが解答を追加させて頂きます。 >今回お聞きしたかったのは、上記モジュールの「MyJoin_zentai」を  クエリで利用した際、表示になる文字数が255文字までとなってしまいます。 ◎そうですね、クエリのまま開くと開くと画面の幅を超えると  一部が隠れてしまいますね  このクエリをレコードソースとして、メモ型のフィールドを  フォームフッターに配置すると添付のようになります  1.添付図の下方の「薬の働き」と「注意事項・副作用」を   フォームフッタ配置  2.上段の複数のレコードの左端のレコードセレクタにマークがあり   フォームフッタのフィールドと連動します システムのデザインはExcelよりも数段簡単ですので Accessを見直して頂きたく思います お付き合いありがとうございました。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.4

>さて、なかなか難しいことがわかりました。  企業で「社員の家族名簿」を設計します 1.M社員  ・社員№(主キー)  ・社員名  ・生年月日  ・性別  ・入社年月日 2.S家族  ・ID(主キー)  ・家族名  ・生年月日  ・性別  ・社員№  ・続柄 Accessではこれでテーブルの設計は完了ですが Excelで作成は出来ますか、たぶん家族人数を5名以内等色々制約が必要になります >モジュール一つで256文字以上を表示するのは無理があるということですね。  これはどう云う事かと気になっています  テーブルのフィールドのデータ型に  「短いテキスト」と「長いテキスト」があります  ・短いテキスト 255文字以内の文字列  ・長いテキスト 文字数に制限がありません   このフィールドはフォーム上ではEnterキー押下で改行され    メモ帳のように際限なく入力可能です このご質問への回答はここまでとさせていただきます

ankle
質問者

お礼

 chayamatiさん、最後にまた教えていただきまして、誠にありがとうございます。  さて、テーブルでフィールドの型式をメモ型にした場合、多くの文字を入力できるのは私も理解しています。  今回お聞きしたかったのは、上記モジュールの「MyJoin_zentai」をクエリで利用した際、表示になる文字数が255文字までとなってしまいます。このため、このモジュールを生かして256文字以降も表示できるようにできないか、という趣旨でした。  chayamatiさん、今回も大変お世話になりました。今後ともよろしくお願いいたします。  

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

>さて、モジュール一つで256文字以上を表示するのは無理がある ◎このような制限はありません  一つのテーブルだけのシステムではExcelのままの方が益しで  Accessに変えるメリットはありませんので  Accessの特徴を活用したシステムに組み替えてはという提案です。  回答をこのまま続けるにはAccessのマニュアル一式になります。  ご質問の趣旨から大きくかけ離れてしまうので、  新規のご質問を立ち上げていただきたく思います。 Excelと違って、Accessはテーブル、クエリ、フォーム、レポート、 モジュールと機能別に5つのグループに分割されています。 ・テーブル:情報を記録するAccessの基本部分 ・顧客テーブルと見積テーブルのように  テーブル間に関連付けを定義。  これをリレーションシップと呼び、リレーションで関連付ける  ため、2つのテーブルにそれぞれに  リンクフィールドを配置。  この2つのフィールドのデータ型が同じで、  どちらかに「重複なし」に定義。  この「重複なし」に定義したフィールドのあるテーブルを  主テーブル、他方をサブテーブル呼ぶ事がある。 ・これでサブテーブルのレコードが確定するとリレーションを辿って  主テーブルのレコードが特定できて、主テーブルの全ての  フィールドを参照出来る 添付の大枠はデータ型が短いテキストのフィールドのプロパティー  (データ型が数値、日付は別のプロパティーが表示されます) ・フィールドサイズ:255文字迄、長いときは長いテキスト型 ・書式 ・定型入力:郵便番号、電話番号、チケット№もここで定義 ・標題:見出し項目をフィールド名と別の文字列とする事が出来る ・規定値:数値型のとき必ず0 ・入力規則:1-6,7-12 ・値要求:はい いいえ ・インデックス:いいえ、重複なし、重複あり ・IME入力モード ・IME変換モード ・ふりがな:利用者名を入力したとき自動的に取り込む ・住所入力支援:郵便番号と住所の双方向的に自動変換  リレーションシップで関連付けられたフィールドには  ルックアップからコンボボックスが作成  【サブテーブルのリレーションフィールド】  →【ルックアップタグ】  ここで右下の小枠が表示され、表示コントロールが  テキストボックス  →【表示コントロール】→【コンボボックス】→【値集合ソース】  →【実購入者】→【連結列】→【M実購入者の主キーのID位置=1】  →【列数=2 実購入者のIDと実購入者名】  →【列幅=0 IDは表示しない】→【リスト行数=任意】  ここで値集合ソースの右端の…クリックでクエリビルダーが起動し  並び替え、参照データの選択ができる

ankle
質問者

お礼

chayamatiさん、ご回答ありがとうございます。 Accessの機能を詳しくお教えいただき、重ねてありがとうございます。 さて、なかなか難しいことがわかりました。 chayamatiさんに、あまりご苦労をおかけしたくありませんので、この質問はこれで終了させていただきます。 今後ともどうぞよろしくお願いします。 ありがとうございました。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.2

3 このシステムのテーブルはこれだけですか。  → はい、これだけです。 ----------------------------------------------------------------------------- Excelの仕組みをそのままAccessに置き換えたらとお考えですね 少し無理があります。 Excelでは情報のすべてを1枚のSheetに記述しますね Accessは役割毎に[M:マスタテーブル、S:サブテーブル、T:トランザクションテーブル]と分割します またテーブル間の関連付けのリレーションシップが有用です 一例として添付のような構成を考えてみました M実購入者、S利用者、T売上履歴、M催事 ここではそれぞれのテーブルがリレーションシップ(関連付け)で結ばれています。 これ等のテーブルはクエリで一つテーブルのスタイルにまとめることが出来る為 テーブルの情報を個別に登録しクエリで纏めてテーブルスタイルにします この後 1.テーブルデザイン→ルックアップ 2.リレーションシップ 3.クエリ 4.フォームデザイン→サブフォーム と進みたいのですが興味をお持ちでしたら、 項目ごとに新規の質問お願いします 先へ進んでいいですか

ankle
質問者

補足

 chayamatiさん、いつもお世話さまです。また、いろいろとお考えいただきまして、誠にありがとうございます。  さて、モジュール一つで256文字以上を表示するのは無理があるということですね。勉強になります。256文字以上表示できた方が仕事がはかどりますので、先へ進めていただければ幸いです。  どうぞよろしくお願いいたします。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.1

補足願います 1.チケット購入者と実購入者はどのような関係ですか   代理人の事ですか 2.購入者番号は主キーですか 3.このシステムのテーブルはこれだけですか  私はチケットテーブル、購入者テーブル、購入履歴テーブルの3つが最小限必要かと

ankle
質問者

補足

chayamatiさん、いつもお世話になっております。 では、補足いたします。 1 チケット購入者と実購入者はどのような関係ですか。 → 実購入者は、本人の分も含めて実際チケットを購入  した人です。番号1~3を例にすると、「あ」の人が自分の分の他に、家族の分「い」と「う」の人の分も一緒に購入したという意味になります。このため、chayamatiさんの お見込みのとおり、代理人になります。 2 購入者番号は主キーですか。  → T_購入テーブルの番号は、主キーです。 3 このシステムのテーブルはこれだけですか。  → はい、これだけです。  以上、よろしくお願いいたします。

関連するQ&A