システムwiki

基準式を手伝ってください

LouiseC 受付中 最終更新日:2021-05-24 21:28

こんにちは、

私は2つのtable、船の1つと接点の1つを持っています.連絡先tableには、一意のIDとその詳細(モバイル/電子メールのECT)があるすべての連絡先があります.船舶はすべての船の詳細を持ち、所有者とマスターを連絡先tableからリンクします(別名
所有者IDとマスターID).

クエリを実行して、船舶の詳細をすべて教えてください.私は基準が顧客からの最初の名前が所有者にリンクしていることを指定できるようにすることができました.
船舶のtableのID?私はそれを書く方法がわからない...

返信リスト(回答:8)

1 #
JoaoFel

obrigado

7 #
KenSher

これを検討するのが好きなものをモデル化するより柔軟な方法は、船舶に関連する容器、接触および能力の間の多対多対多関係の種類として、三元(3方向)の関係タイプであることを考える.の属性です
関係の種類多対多の関係型は、関係の種類を2つ以上の1対多の関係タイプに解決するtableによってモデル化されています.幅広い概要であるため、tableは次のとおりです.
船舶
....vesselid(pk)
....vessel
コンタクト
....ContactID(PK)
....firstname
....lastname
能力
....CapacityID(PK)
....capacity
関係の種類をモデル化するには:
容器コンタクト
....vesselid(FK)
....contactid(fk)
....capacityID(FK)
主キーは、VeselIDとConstactIDの複合です.これは、例えば船舶が例えば二重または複数の所有権にある状況に応じています.それはまた、船舶を記録すると他の容量の連絡先を可能にするであろう.データ入力はされます
血管の形を介して、そこでは容器内の親の形に結合されたサブフォームを埋め込んだ、それぞれ容器上の親形式にリンクされ、それぞれ接合された2つのコンタクトイドとCathypidIdに結合した2つのコンボボックスを含みます.
連絡先を含む船舶の詳細を返すために、最高の媒体は、すべてのtableを結合し、レポートを船舶でグループ化し、詳細セクションに連絡先を返すクエリに基づくレポートになります.あるいは、連絡先を返すことができます
VBA連結関数を用いてQUELStableに基づくクエリ内の計算列内の連結文字列式として、ADO RecordSetオブジェクトの非常に効率的なGetStringメソッドを使用して、concat.zip
私の公共データベースのフォルダに:
https://onedrive.live.com/?cid=44cc60d7fea42912&id=44cc60d7fea42912年169.
Allen Brownは、DAOを使用して連結機能も提供しています. https://allenbrowne.com/func-concat.html.

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

あなたの回答に感謝します.不適切な説明ですみません、私が読んだとき私は私が言うしようとしていたのかわかりません.

基本的に、私の問題は私が船舶の詳細を持ち、次にマスター(ContoctID)と所有者(連絡先ID)を持つtableを持っているということです.その後、クエリを実行しようとすると、ContactID、Anditは2行、1行が1行表示されます.
マスター、そして他の列は所有者とします.別々の列でも同じ行で実行するように言う方法はありますか?

それが理にかなっていることを願っています!

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

それはあなたが現在船舶のtableを接触tableの2つのインスタンスに結合しているように聞こえます.これは、船ごとに2行が返されている理由を説明します.船舶のtableが外部キー列がMasterIDとOwnerIDを持つと仮定しています.あなたは帰ることができます
アウトクエリ内のAnjeStoidのjoinクエリへの参加の結果セットを別々の列に入れる血管あたりの1行の結果表は、OWNERID、例えば
selects name、firstname、MasterFirstName、LastNameとしてmasterlastname、
OwnerFirstName、ownerlastName
(船舶としての船舶としての船舶としてC1としての船舶として船舶) v1.MasterID= C1.ContactID)内部結合
(Select VeSpelid、MasterID、
firstNameとしてOWNERFIRSTNAME、OWNERLANDNAMEとしてLASTNAME
船舶からV2の内部結合コンタクトC2としての
v2.ownerID= C2.ContactID)の所有者として
v1.vesselid= orisers.vesselidとc1.c 1.contactid= OSERES.MasterID;
しかし、私はまだ私の以前の返事で提案した構造を感じます.

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

こんにちはケン、

私はそれが提案されたようにそれを設定しました、しかし今私は私たちが書くレポートに必要な詳細を提出することができる別のtableチンを設定しました(これは入力されます)、

ThetableIncludes:
船舶(FK)、Contactid(Owner)(FK)、(マスターの)連絡先ID(FK)、日付、釣り詳細

それから私はTorunのクエリを持っています:
レポート数、船舶名(血管類表から)、船舶サイズ(船舶用tableから)、船舶タイプ(船舶用tableから)、所有者(COSTORIDtableから)、所有者最後(COSTORTIDtableから)、オーナーモバイル(COSTORTIDtable) 、最初にマスター(constactid table)、
マスターを最後に(constactid table)、マスターモバイル(constactidtableから)、日付(レポートtableから)、FishingDetails(レポートtableから)

この問題は、最初の連絡先ID(所有者)から最適な詳細を引くのを指す方法がわからない、そして次に、2番目の連絡先ID(マスター)からのすべての詳細をわかりません.

私がする必要があるのは、クライアントIDISに基づいてクライアントIDISに基づいて最初の名前がレポートのtableの連絡先ID(Master)列に基づくようにすることです.それは可能ですか?私は私がそれをどのように設定するかどうかよくわからない?

あなたの助けをありがとう、それは明らかにこれを説明しようとしているとても難しいです!

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

多分これは私がそれをより一般的な方法で説明するならば、もっと意味があるでしょう.

私はすべての私の顧客を持つtableを持っていると言う.

クライアントID(PK)、FN、LN、電子メール、モバイル

私は今、特定の日に記載されているすべてのクライアントを含むtableを持っています:

日付、クライアントID(FK)、クライアントID(FK)、クライアントID(FK)-すべてクライアントIDが異なるとさまざまなクライアントIDがあります.

今、私はクエリを入力したい、

クライアント1の日付、クライアント1のFN、クライアント1の電子メール1、クライアント2のMobile 1、クライアント2のFNクライアント2のFN、クライアント2の電子メール、クライアント2のMobile、クライアント3、LN 3、クライアント3のEメール、クライアント3の携帯3

現在、IFIはFN、LN、電子メール、モバイルを3回、それはこのような楽しい行を与えるでしょう:

クライアント1のDATE、クライアント1のFN、クライアント1の電子メール1、クライアント1のMobile 1、クライアント1のFNクライアント1のLN、クライアント1の電子メール1、クライアント1のMobile 1、クライアント1、LN 1、クライアント1の電子メール1、クライアントの携帯1

クライアント2の日付、クライアント2のFN、クライアント2の電子メール、クライアント2の電子メール、クライアント2のFNクライアント2のLN、クライアント2の電子メール、クライアント2のMobile 2、クライアント2のLN 2、クライアント2のEメール、クライアントの携帯電話2

クライアント3の日付、クライアント3のFN、クライアント3の電子メール、クライアント3のMobile、クライアント3のFN、クライアント3のLN、クライアント3の電子メール、クライアント3のMobile、クライアント3のLN 3、クライアント3のEメール、クライアント3の携帯3

私が欲しい方法を記入するためにクエリを得るための最良の方法は何でしょうか?

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

一般的な例では、問題はクライアントの数が変数であるため、クライアントtableの複数のインスタンスに参加すると、参加する可能性のあるクライアントの最大数を知る必要があります.たとえあなたが任意の最大あなたを仮定しても
次に、どのクライアントのデータが各結合によって返されるかを判断するという問題があります.これは、クライアントIDまたは類似のソート順で1日当たりのクライアントの序数位置を計算することによって可能ですが、それは些細ではありません.
パフォーマンスを非常に遅くする可能性があります.
クロス集計クエリによって複数行にわたって日付データを複製せずにレイアウトを返すことは可能ですが、各クライアントのデータは単一の式に連結されなければなりません.返される各列見出しは値になります.
例えばクライアントの名前は、別々の列で返されるのではなく、列と日付行の交差点に連結された値を持つクライアントの名前です.
日付データを重複することなくレイアウトを実現するための最良の手段はレポートになると思います.ここに2つのオプションがあります 1.最初の、最も簡単なことは、単にレポートを日付にグループ化し、グループヘッダー内の日付とその日に共通の他のデータ、および詳細セクションのクライアントデータを返します.各クライアントのデータは、以下の(A)のいずれかで、別の行として返されます.
グループヘッダのフォーマットイベント手順では、グループヘッダのフォーマットイベントプロシージャでMovelayoutプロパティをfalseに設定することで、グループヘッダデータと同じ行に設定することで、(b).後者の場合、詳細セクションのコントロールが必要になる
レポートが印刷プレビューで開かれるかプリンタに送信されたときに、グループヘッダデータをオーバーレイしないように、もちろんインデントされます.この場合はレポートビューを使用できません.
2.もう1つのオプションは、日付を返す親レポートを作成することであり、その内で、クライアントデータを返します.ここでの問題は、クライアントごとのフィールド数を持つということです.
返品したい場合は、クライアントごとに2行以上に折り返すのを避けるために、レポートのページ幅を著しく幅広く幅広く必要とします.印刷プレビューでレポートを表示するには、たくさんの水平スクロールが必要になります(これはクロス集計にも問題になるでしょう.
クエリ)、およびレポートを印刷すると、おそらくランドスケープ形式のA3プリンタでさえも、1ページごとに複数のシートが生成されます.
私の好みはオプション1です.(a)または(b)を使用するかどうかは、ヘッダーデータによってどの程度の水平方向のスペースがどの程度かかるかによって異なります.

8 #
S.A.Mar

こんにちはルイーズ、私はあなたの顧客tableと連絡先tableがどのように合うのかわからないが、私は船舶の表の所有者IDとMasterIDが連絡先tableのcontactIDと一致するべきであると思うでしょう.

次に、クエリグリッドに必要なフィールドをドラッグします.