みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Shin様
お返事ありがとうございます。
スマホでご回答頂いていたのを楽しみしてようやくPCの前に来ました。
おっしゃる通りの計算式をデータビューアで確認しましたが結果が0でした。
何がダメなのでしょうか。。。
週末に考えおりましたが解決できなかったのでご相談させてください。
FMP18
テーブルAの商品名フィールドに
青リンゴ、夏みかん、二十世紀梨、、、 などがあります。
同じくテーブルAに
分類CD、分類名をスクリプトを用いてグループ分けをしたいと考えております。
試みたのが
テーブルBを作成し、キーワード、分類CD、分類名フィールドを作成。
(テーブルAにもキーワードと名前をつけたグローバルフィールドを作成しテーブルA・Bのキーワードフィールドでリレーションをしました)
値一覧でテーブルBのキーワードを作成。
PatternCount ( テーブルA::商品名 ; "リンゴ" )であればデータビューアで「1」が返りますが、
PatternCount ( テーブルA::商品名 ; ValueListItems ( Get ( ファイル名 ) ; "キーワード" ))
※テーブルBキーワードフィールドにはりんご、リンゴがあります。
計算式をどのように見直せば良いでしょうか。
アドバイスを頂けると幸いです。
どうぞよろしくお願いいたします。
宜しくお願いします
FMP18
テーブルαのポップオーバーボタン内にテーブルβの期限日、期限時刻フィールドを配置し、カレンダーテーブル(テーブルγ)に転記しようとしておりますが
頭の中がこんがらがってしまい皆様のお知恵をお借りしたく投稿させてください
テーブルα
ID
フラグA、フラグB、フラグC、フラグD、フラグE、フラグF
テーブルβ
期限日A、時刻A
期限日B、時刻B
期限日C、時刻C
期限日D、時刻D
期限日E、時刻E
期限日F、時刻F
※期限日はドロップダウンカレンダー、時刻は直接入力
※時刻は空欄の場合もあります
テーブルγ
外部キー
日付、時刻、用件
変数を設定[$id ; テーブルID]
レイアウト切り替え[テーブルγ ; なし]
新規レコード
フィールド設定[テーブルγ::外部キー ; $id]
If[Get(スクリプト引数) = "A"]
フィールド設定[テーブルα::フラグA ; 1]
フィールド設定[テーブルγ::用件 ; "A" ]
変数を設定[$date ; 値 : テーブルβ::期限日A]
変数を設定[$time ; 値 : テーブルβ::時刻A]
Else If[Get(スクリプト引数) = "B"]
フィールド設定[テーブルα::フラグB ; 1]
フィールド設定[テーブルγ::用件 ; "B" ]
変数を設定[$date ; 値 : テーブルβ::期限日B]
変数を設定[$time ; 値 : テーブルβ::時刻B]
Else If[Get(スクリプト引数) = "C"]
フィールド設定[テーブルα::フラグC ; 1]
フィールド設定[テーブルγ::用件 ; "C" ]
変数を設定[$date ; 値 : テーブルβ::期限日C]
変数を設定[$time ; 値 : テーブルβ::時刻BC]
Else If[Get(スクリプト引数) = "D"]
・
・
同じ様にE、FがElse Ifで続きます
・
・
End If
フィールド設定[テーブルγ::日付 ; $date]
フィールド設定[テーブルγ::時刻 ; $time ]
関連レコードへ移動[関連レコードのみを表示 ; テーブル:テーブルα]
オブジェクトへ移動[オブジェクト名: "提出期限日"] ←ポップオーバーボタンの名前です
現在は転記用のボタンを配置しており転記しておりますが入力時にトリガで転記したいと思い、
ポープオーバーボタン内の期限日、時刻フィールドにトリガを仕込もうと考えておりますが、
期限日(ドロップカレンダー)、時刻(直接入力)にトリガを仕込んで順に入力した場合、
今のステップでは同じ内容のレコードが出来る(期限日のみ、期限日・時刻の両方)ので判別が必要かと思いますが、判別の計算式がわかりません。。
どうかお知恵をお貸し頂けますでしょうか
宜しくお願いします
FMP18
レイアウト移動→検索の為レイアウトにボタンを配置しオプションにスクリプト引数を設定しております
スクリプトステップにget(スクリプト引数)を「If」「Else If]の計算式に入れ分岐させております
ステップ「IF」の前にグローバル変数($$)を設定し基となるテーブル(テーブルA)のIDを値に持たせて別のテーブル(テーブルB)のフィールドに入れていますが、デバッガのステップオーバーで確認しているとカードスタイルでウインドウを開いた際にグローバル変数がデータビューア上で消えて検索スクリプトが思うように動きません
思い当たる原因は「Else If」を増やしすぎたのかな?と思っています(と言っても4つです)
どのように対処すれば宜しいでしょうか?
情報が少なく判断が難しれければ申し訳ございませんがアドバイス頂けますでしょうか??
どうぞ宜しくお願い致します
Hiro様
おはようございます!
出来ました!!!
「::」から前のテーブル名は不要であったのですね!!
ありがとうございます!
ExecuteSQL関数の勉強しっかり行います
ありがとうございました
今後ともどうぞ宜しくお願い致します
Hiro様
ご教授頂きありがとうございます!
しかしながら戻り値が「?」となって上手くいきません。。
Execute SQL関数が初めて使うので理解も追いついていないのですがデータビューアで確認したら
『The column named "マスタテーブル::氏名" does not exist in any table in the column reference's scope.』と表示されています。
計算式は
ExecuteSQL (
"
SELECT\"マスタテーブル::氏名\"
FROM\"マスタテーブル\"
WHERE\"マスタテーブル:ID\" = ?
"
; ""
; ""
;
GetValue(List(テーブルA::マスタ用外部キー);Get(計算式繰り返し位置番号)
)
です。
WHEREの所はどのIDか分からず順に全てのテーブルのIDを入れましたがダメでした。。
不必要かと思い割愛しておりましたがもしかしたら?と思ったので詳細をお伝えします
テーブルは
・マスタテーブル
・テーブルA(マスタIDとテーブルCのIDを割り当てる用のテーブル)
・テーブルB(レポート印刷用テーブル)
・テーブルC(入力テーブル)
リレーションは
マスタテーブル=テーブルA=テーブルC=テーブルB
※各IDで関連づけていますがテーブルAはテーブルC用外部キー、マスタ用外部キーとリレーション組んでいます
どのようにすれば良いでしょうか?
お忙しい中恐縮ですがご指示頂けると幸いです
FMP18
いつもアドバイスありがとうございます!
下記の件、ご相談させてください
◆テーブル
マスタテーブル
テーブルA
テーブルB
※各テーブルにIDフィールドを設け、関連づけています
◆フィールド
マスタT(ID、氏名)
テーブルA(ID、マスタ用外部キー)
テーブルB(ID、繰り返しF)
テーブルBに表示の為の繰り返しF(計算F)を作成したいと思っているのですがあと1歩が解らず滞っております。。。
現在出来ているのは、
GetValue( List( テーブルA : : マスタ用外部キー ) ; Get( 計算式繰り返し位置番号 ) )
希望は、テーブルBにテーブルAの外部キーが繰り返しで表示されているのを氏名で表示したいです。
List関数の引数にLookupやSubstituteを使ってみましたが上手くいかず。。
アドバイスを頂けると幸いです。
どうぞ宜しくお願い致します
koeda様
お返事ありがとうございます!!
的確なご指摘とても勉強になります!!
時間はかかりそうですがしっかりと自身で理解しながらやってみます
取り急ぎ、お礼まで。
誠にありがとうございます!!
Shin様
いつもご相談にのって頂きありがとうございます!
Master Bookはひととおり確認しており、
初期スクリプトステップの『検索実行[]』後や『対象外のみを表示』後に
検索モードに切り替え[一時停止:オフ]
フィールド設定[タスク::フィールドA;担当者::フィールドA]
対象レコードの絞り込み[]
の3ステップをいれてみましたがうまくいかずご相談させて頂きました。。
リレーションやポータルフィルタにも特に細工はないので八方塞がりになっております。
恐れ入りますがもう少し詳細を教えていただけますでしょうか?
※併せて②のソートがトリガでかからない件もお願い致します
どうぞ宜しくお願い致します
FMP18
いつもいつも大変お世話になっております
今回も宜しくお願い致します
FMP18のスターターソリューション内にあるカスタムApp『タスク』について2点、ご相談させてください
※カスタムAppのDLリンクを貼っておきます
https://fmgo.jp/detail.php?recid=538&ca … phone=&pc=
①スクリプトの『関連レコードを追加』に対象レコードの絞り込みを行いたい
スクリプトステップは下記の通りです
#このスクリプトは担当者を追加するために『タスク詳細』レイアウトの[+]ボタンから実行されます。
エラー処理[オン]
ユーザによる強制終了を許可[オフ]
#次のステップで現在のレコードの主キーを確実に取得するためにレコードを確定します。
レコード/検索条件確定[ダイアログあり:オフ]
変数を設定[$$parentPrimaryKey;値:タスク::主キー]
#現在の関連する主キーを取得します。関連する主キーの数を取得します。
変数を設定[$relatedKeys;値:List(担当者::主キー)]
変数を設定[$numberOfRelateRecords ; 値:ValueCount( $relatedKeys )]
#ユーザが担当者を選択できるように「担当者選択」レイアウトを表示します。
新規ウインドウ[スタイル:カード;使用するレイアウト:「担当者選択」(担当者);高さ584;横幅:668]
#検索を実行して親レコードにすでに関連つけられている人物を除外します。
If[$numberOfRelateRecords>0]
検索モードに切り替え[一時停止:オフ]
変数を設定[$loopCount;値:1]
Loop
フィールド設定[担当者::主キー;GetValue ( $relatedKeys ; $loopCount ) ]
Exit Loop If[$loopCount = $numberOfRelateRecords ]
変数を設定[ $loopCount ; 値: $loopCount + 1 ]
新規レコード/検索条件
End Loop
検索実行[]
対象外のみを表示
End If
こちらのスクリプト結果後に自身で新たに作成したフィールドAの値で絞り込みを行いたいです。
②
元々のカスタムAppのレイアウトの管理にて「担当者選択」レイアウトのスクリプトトリガに『OnLayoutEnter』で「名前でソート」を仕掛けておりますがポータル「担当者ポータル」に2つ以上のレコードがあると(2つ目以降)スクリプトでのソートはかかっておりません(手動ではソート可)
どのように変更をかければ良いでしょうか?
お忙しい中、恐れ入りますがご教授頂けると幸いです
どうぞ宜しくお願い致します。
koeda様
いつもご丁寧にご教授頂き誠にありがとうございます!!
とてもシンプルで素敵です。デカルト積は初めての試みなのでしっかりと理解を深め活用していきます!
また、ポータルのフィルタも知識が浅いのでしっかり勉強致します!
本当にありがとうございました!!
今後ともどうぞ宜しくお願い致します
ありがとうございました
FMP18
いつもご親切にご回答頂き誠にありがとうございます
前回のご相談の次の工程で躓いており、表題の件でご相談させてください
※長文、お許しください
報告書を作成するにあたり、現在エクセルで入力しておりますが共通項目が多く大変なのでFMで解決したいと考えております。
テーブル:共通入力フォームテーブル、報告書Aテーブル、報告書Bテーブル・・と報告書テーブルが5つ、顧客マスタテーブル
フィールド:各テーブルにユニークID、顧客名が存在します。報告書テーブルのみ郵便番号、住所、電話番号、FAX、代表者名
顧客情報は共通しているので顧客名Fに入力したらスクリプトでマスタから情報を参照したいと考えております
※顧客マスタの顧客名フィールドは正式名称Fと略称Fの2つ存在します(例:正式名称F→Mr.Children、略称F→ミスチル)ので両方の名称Fから参照してデータを反映したいです
思いついたスクリプトとして
変数を設定[$名前;値:入力フォーム::顧客名]
レイアウト切り替え[顧客マスタ]
検索モード
フィールド設定[マスタ::顧客名;$名前]
検索実行
・
・
・
と、それぞれの報告書Tの顧客情報Fにマスタのデータを入れるようステップを組めば良いのでしょうか?
かなり労力がかかりそうなのでご相談させてください。
又、正式名称Fだけでなく略称Fからも参照したいと考えております
リレーションもどう考えれば宜しいでしょうか??
お知恵をお貸しいただければ幸いです。
どうぞ宜しくお願いします
koeda様
なるほど!!
細やかなご配慮に感謝致します
理解出来ました
本当にありがとうございます!!
koeda様
いつも本当にご丁寧にありがとうごいます!
解説まで頂いて理解が深まりありがたい限りです
むやみにフィールドを増やさずファイルメーカー的に出来てとても光栄です
追加下さっている『決算期』フィールドの計算式『入力日to決算期(日付1)』とはどういう意味の計算式ですか?
せっかくなので興味がありお尋ねさせて頂きます。
ご教授頂けると幸いです
Shin様
1年(365日)を1月から順に日数を減らしているのですね!!
理解出来ました!
Shin様の豊富な知識は経験と想像(想像)力からと考えるととてもかないません。。。
今後もご相談をさせて頂きますが引続きどうぞ宜しくお願い致します!!
早速次の壁にぶち当たりました。。。
電話番号・FAX・郵便番号も同じく1つのフィールドから複数のフィールド(電話・FAXなら3つに、郵便番号も2つに)に表示させる必要が有ります。
さすがにこの場合はLeft関数を用いてフィールドを増やすしか方法はございませんでしょうか?
出来れば日付の様に1つのフィールドで賄いたいです。
ご検討宜しくお願い致します
Shin様
ありがとうございます!難しく考えておりとても簡単で恥ずかしい限りです。。。
koeda様
いつもプラスワンのアドバイスをご親切にありがとうございます!
皆様いつも本当にありがとうございます!!
FMP18
昨日もご相談させて頂いたばかりで恐縮ですが続けてご相談させて下さい
当社の決算が9月30日で10月1日より新しい期が始まります
入力日:2019/09/30→52期
入力日:2020/09/30→53期
※入力日フィールドと集計期フィールドは別に設けております
と表示させるにはどの様にすれば宜しいでしょうか?
ご教授頂けると幸いです
koeda様
サンプルまでご提供頂きとてもよく理解できました!
ルックアップで表示しようと考えておりましたがこちらの方が簡便ですね
年月日もとてもよく解りました。関数より簡単ですね
誠にありがとうございます!
まだまだ未熟なものでこれからもご相談させて頂きますがどうぞ宜しくお願い致します!!
ありがとうございました
FMP18
入力テーブル
表示テーブル
入力id=表示id
と2つテーブルが存在しております
※報告書を作成するにあたり表示テーブルは複数(○○報告書・△△報告書など)あり、重複入力が手間なので入力テーブルに1度で済ませたく思っております
報告書のレイアウトは変更してはいけないので『年』『月』『日』もレイアウト内にテキストとして予め書いております
希望はエクセルの様に入力テーブルに記入し、表示テーブルの各セルにyear・month・day関数で参照して表示したいと思っております
つまずいているのは表示テーブル内のフィールドを複数増やしたくなく、1つで賄いたい(日付入力箇所がA・B・C・Dと有り表示させるのに×3フィールドだと多くなる為)
ファイルメーカーではこの様なことは可能でしょうか?
koeda様
コメントありがとうございます!
確かにそうですよね!!
既に導入されている見積ソフトの使用をそのまま踏襲しようと考えておりました。。
せっかくファイルメーカーで作るので柔軟に考えます
とても解りやすい解説ありがとうございます!!
Shin様
お返事ありがとうございます
別ウインドウに開く理由として商品を探すのが難しくて階層表示(TreeView)を考えております。
分類が4段階(大・中・小・極小?)にして任意のレコードを複数(10程度)選択。とイメージしております
※ライジングサン岩佐様のお知恵を拝借して
まずはやってみてまた相談させてください
引続き宜しくお願いします!
Shin様・nago様
お返事ありがとうございます!
言葉足らずで失礼しました
テーブルは伝票・明細・商品があり
明細cd=明細cd、商品cd=商品cdでリレーションを行なっております
今回は伝票テーブルより別ウインドウ(商品マスタ)を開き、任意の商品を複数選択しポータルへ反映したく思っております。
nago様のおっしゃる通りフラグFを作成しループで拾っていくのがシンプルでしょうか?
お世話になります
FMP18
かなりの初歩的なご質問、お許しください
見積書を商品マスタのウインドウを開いて伝票テーブル内の明細ポータルにレコードを反映させたく思っております
手段をご教授頂けますでしょうか?
どうぞ宜しくお願いします
Shin様
いつもご丁寧にありがとうございます!
希望通りの形になりました
本当にありがとうございました
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 671.02 KiB (Peak: 725.68 KiB) ]