システムwiki

複数の行から1行と1つのField-MS Access 2013への文字列を組み合わせる

JohnnyD 受付中 最終更新日:2021-06-14 06:30

複数行の文字文字データを1つのフィールドと1行のデータに組み合わせることができますか?たとえば、次の点をご覧ください.

1国連合国

アメリカ2 アメリカ、イタリア、ドイツ

3イタリア

4ドイツ

返信リスト(回答:22)

16 #
Scottge

こんにちはジョニー、
これは非常にリードであり、これを行うためにさまざまなアクセス専門家によって書かれたいくつかの機能があります.これが私が正常に使用したものです.
https://allenbrowne.com/func-concat.html.
Allen Browneは元アクセスMVPであり、彼の記事のいくつかは標準と見なされます.複数のレコードにわたって連結を検索すると、同じ機能を実行する他の機能が見つかるはずです.
別のアクセスMVPはこの機能を提供します:
https://thedbguy.blogspot.com/2016/02/SIMPLECSV....

応答16# ->にスキップ
20 #
JohnnyD

これらのどちらかを使いたいですが、VBAで書く方法がわかりません.私のフィールド名がどこに行く必要があるのかわかりません.table名、データベース名、そのようなものは何でも.私はコードが問題を解決するためにどのように機能するかわからない、そして私は慣れていません
構文のいずれかで.

応答20# ->にスキップ
10 #
Scottge

あなたが欲しいものをやる唯一の方法は、私がリンクしたもののような機能を持っています.それで、あなたはそれらの使い方を学ぶ方法を学ぶ必要があります.
いずれの場合も、関数はグローバルモジュールに入ります.Visual Basic Environment(VBE)を開き、新しいモジュールを追加することを選択します.次にコードをコピーしてモジュールに貼り付けます.
コードを使用するには、関数を使用してクエリに列を追加します. 国:連結(「国」、「表名」、「Group=」&[CompanyID])

応答10# ->にスキップ
9 #
JohnnyD

だから私は「エラー28:不明」を得ていますか?その修復方法はわかりません.このフィールドにすべての値が欲しいので、私のコードはこのようになります.

国:連結( "国"、登録済み ")

それは登録済みの照会の国のすべての国の出力を与えますが、私が使用したVBAコードからポップアップエラーメッセージが表示されます. リンク:func concat.

あなたが知っていればこのエラーを解決するにはどうすればいいですか?

応答9# ->にスキップ
7 #
Scottge

クエリの完全なSQLを表示できますか?また、国のリストを望んでいるが、グループ化値ではないように見えます.あれは正しいですか.? RegistrationsDueクエリのTJHE SQLとは何ですか?

応答7# ->にスキップ
6 #
JohnnyD

1つのフィールドから1つのフィールドに組み合わせるためのすべてのデータを1つのフィールドにまとめるだけです.現在のセットアップ現在:

応答6# ->にスキップ
1 #
Scottge

わかりました、私は誤解があるかもしれません.一般的に一部のグループ化によってリストを取得したいと思うでしょう.たとえば、特定の国をカバーするセールスマンがあり、各セールスマンがカバーしている国のリストが必要な場合があります.しかし、あなたはグループ化フィールドを持っていないので
関数が失敗しているのはなぜ;
私が推薦することは、国の列を生産するための機能です.このようなもの:
データベースとしてのDIM DB、RECORDSETとしてのRS
薄暗いSTRCOUNTRIESとして文字列として
db= currentdb()
を設定します set rs= db.openrecordset( "queryname")
RS.MoveFirst
rs.eofではありませんが
strcountries= strcountries&rs.fields( "国")&"、" "" rs.movenext
ループ
strcountries= left(strcountries、len(strcountries)-2)
debug.print strcountries
これにより、リストと一緒にやりたいことを明確にしていないため、これはVBEのイミディエイトwindows にリストを印刷します.
他のポイント.グループがクエリごとに必要ありません.あなたのクエリは単に単純にするべきです:
登録から明確な国を選択
expirationDate国別注文

応答6# ->にスキップ
5 #
dhookom

クエリを参照するクエリから関数を呼び出す理由を中心に、頭を包むのに苦労しています."registrationsdue"はクエリの名前であり、あなたはそれをconcatreletated()関数から呼び出しています.私はそれが合法的な、あるいは何でさえもよく私はよくわかりません
あなたが望む.一意の国名だけで別のクエリを作成し、それをconcatrelet()関数で使用できますか?

あなたの最初の投稿に基づいて、この結果は次のようになります:

1国連合国

アメリカ2 アメリカ、イタリア、ドイツ

イタリア3. アメリカ、イタリア、ドイツ

4ドイツアメリカ、イタリア、ドイツ

応答5# ->にスキップ
4 #
JohnnyD

ええ、それは私にその答えを与えます.それは私に最小のエラーを与えた唯一の表現でしたので、私はそれと一緒に行きました.私は新しいクエリを開始してそれをすることを試みることができます.

応答4# ->にスキップ
3 #
KenSher

[私の公開データベース]フォルダにCONCAT.ZIPで代替連結機能があります.
https://onedrive.live.com/?cid=44cc60d7fea42912&id=44cc60d7fea42912年169.
以前のversionのアクセスを使用している場合、ボタンなどのフォームオブジェクトの色が誤って表示され、それに応じてフォームデザインを修正する必要があることに注意してください.
リンクを開くのが難しい場合は、リンクをコピーし(リンクの場所ではなく)、それをブラウザのアドレスバーに貼り付けます.
この小さなデモファイルは、ADO RecordSetオブジェクトの非常に効率的なGetStringメソッドを使用するGetList関数の使用を示しています.これは北風データを使用して報告書に示されています.基礎となるクエリと機能の説明
レポートヘッダーに呼ばれます.最終結果は、現在レコードセットをループすることで現在試みられている方法と同じですが、大きなレコードセットでより効率的です.
同じファイルに、値をレポートに直接連結できる方法もあります.これにより、関数を呼び出すことができます.再度レポートヘッダーでこれがどのように行われるかについての説明がありますが、レポートのコードを勉強する必要があります.
それがどのように機能するかを完全に理解するためのモジュールであるので、関数呼び出しは回避されている間、それはVBAにいくつかの親しみやすさを必要とします.

応答3# ->にスキップ
2 #
JohnnyD

私はこのデモを使い、あなたに知らせます!お手伝いありがとう.

応答9# ->にスキップ
8 #
dhookom

登録の左側に二重引用符がありません.試してみてください:

国:連結(「国」、「登録」)

これを簡単に簡単にテストできます.Ctrl + Gを押して

に入る

?連結(「国」、「登録」)

応答10# ->にスキップ
11 #
dhookom

私はVBAの要件に完全に同意し、別の解決策に向けていることを悩ませません.モジュールに「modstringstuff」のような名前を保存して名前を付けることをお勧めします.モジュールに関数の名前と同じように名前を付けると、そうではありません.
作業.

18 #
JohnnyD

私は何も変わっていません.

応答18# ->にスキップ
17 #
JohnnyD

写真が送信されたらよくわからないので、もう一度送信します

応答17# ->にスキップ
15 #
JohnnyD

これは他の1つの

です

応答15# ->にスキップ
13 #
DanielP

あなたは私が提供した元のリンクを見ましたか?それはあなたがその後のものです.

応答13# ->にスキップ
12 #
JohnnyD

はい、私はただVBAの使い方がわからない.

21 #
DaveM12

こんにちはジョニー、
私はあなたのデータのスクリーンショットを見る必要があります.
しかし、あなたが与えた例では、このタイプの数式を単に使用することができます.
あなたのデータはA2、A3とA4にあります.
= A2&"、" A3&"、" A4

応答21# ->にスキップ
14 #
KenSher

それはExcelの解決策です.このフォーラム、およびOPの質問は、MS Accessデータベース製品に関連しています.

応答21# ->にスキップ
19 #
JohnnyD

私のtableのデータは変化しているので、それが常に3カ国ではないかもしれません.1日10カ国と言うことができますか?それは次に8に変わりますか?単一のフィールドにすべてのデータを勘案することができ、そのデータを組み合わせることができます.

22 #
DanielP

あなたはVBAを使わなければなりません、参照してください https://allenbrowne.com/func-concat.html.