みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
何の動作かわかりませんが、繰り返しフィールドを使うのはやめておきましょう。将来、きっと痛い目に遭います
Shin先生、ご教示いただきありがとうございます。
そうですね。無理とのことでやめておきます。
今後もよろしくお願いいたします。
OS:Win10
Ver:19
タイトルの通り、ご教示いただけないでしょうか。
《フィールド》
注文番号 数字[10]
商品番号 数字[10]
入力者が最初と最後の注文番号を入力するよう促すために条件付き書式の設定をしているのですが、
① 商品番号[2]に数字を入れると注文番号[2]に黄色の塗りつぶし色を付けさせるには...?
② 続けて商品番号[3]に数字を入れると注文番号[3]を発色させ、注文番号[2]を発色しないようにするには...?
③ さらに新規レコードボタンをクリックした後に、注文番号[1]だけ黄色の塗りつぶし色を固定するには...?
よろしくお願いいたします。
バックアップは無いのですか。業務データでしたら、信じられない運用です。
取り敢えず、Excel のデータをそのまま新しいテーブルとしてインポートします。そのテーブルとメインのテーブルを、受注NOでリレーションします。
メイン側の受注NOには常時ユニークの制限をつけます。
メイン側に、新テーブルをインポートします。
商品CD、商品の繰り返しごとに
GetVaslue ( List ( リレーション:; 商品CD ) ; Grt ( アクティブ繰り返し位置番号 ) )
で全置換を繰り返します。
検証していませんが、たぶんうまくいくでしょう。
(20回の作業なので、スクリプト組むより手動の方が早いでしょうね)繰り返しフィールドを使っているから、インポートが面倒なんですよ。これに懲りて、テーブル構造へ変更しましょう。
Shin先生のおっしゃる通りやってみましたところ、うまくできました。
明日、会社で使わせていただきます。ありがとうございました。
あの、繰り返しフィールドにループ処理は難しいでしょうか。
FMからExcelにエクスポートしてみれば、どういうデータ構造かわかります。
区切り文字、Char(11)だったかな、で繰り返し全体が1つのセルに入るでしょう。現状のExcelファイルでは複数のレコードに分かれちゃってるので、1レコードにまとめないと無理では。
別のFMファイルにインポートして加工してもいいですが、Excelとどっちが得意でしょうか。時間のある時に、FMの方を繰り返しを使わない形に直したほうがいいでしょうね。
himadaneeさん
ご教示いただきありがとうございます。
FMのデータはすべて削除してしまったので、データがありません...。
別のExcelデータがありますが、これをFMの繰り返しフィールドにインポートする方法を教えていただきたいです。
過去の投稿を見てやりましたがうまくいきませんでした。
ご教示ください。よろしくお願いいたします。
OS:Windows 10
Ver.FileMaker 19
---------------------
ファイルメーカーで私が誤って全削除してしまいました。
幸いExcelデータはあるので、それを繰り返しフィールドへインポートするにはどうしたらよろしいでしょうか。
例えば、Excelデータでは、
日付 受注NO 受注明細NO 商品CD 商品
2024/1/28 123 1 100S001 a
2024/1/28 123 2 100S002 b
2024/1/28 123 3 100S003 c
2024/1/29 124 1 100S001 a
2024/1/29 124 2 100S002 b
2024/1/29 124 3 100S003 c
2024/1/30 125 1 100S001 a
2024/1/30 125 2 100S002 b
2024/1/30 126 1 100S001 a
Filemakerのフィールド配置では
日付[日付フィールド]
受注NO[数字フィールド]
商品CD 商品 (両方とも繰り返しフィールド(10)です)
[テキストフィールド[1] ][テキストフィールド[1] ]
↓ ↓
[テキストフィールド[10]][テキストフィールド[10] ]
Shin先生、助けてください。
どうかご教示のほどお願い申し上げます。
Shin先生
himadaneeさん
ご教示いただきありがとうございます。
なるほど、そういうことですね。別の方法で考えておきます。
[OS:Win10 / Ver.14]
FileMakerへインポート可能とするEXCELの列数はどこまででしょうか。
列Aから列IVまでで間違いないでしょうか。
ご教示のほどよろしくお願いいたします。
レコードがアクティブのままになっているのでしょう。最初に、レコードを確定 をいれておくといいです。
Shin先生、ご指摘の通りでございます。
レコード/検索条件確定 [ダイアログなし]
新規ウインドウ [スタイル: ドキュメント]
対象レコードの絞り込み [記憶する]
If [Get(最終エラー) = 0]
対象レコード削除 [ダイアログなし]
End if
ウインドウを閉じる [現在のウインドウ]
これを検証してみたところ問題ないことを確認できました。
すごく勉強になりました。ありがとうございました。
2レコード以上を連続でチェックした時に、期待している動きになりませんね。
loop 使って処理するのは結構面倒です。
新規ウインドウ
レコードの絞り込み[選択 ; "選択"]
If ( G絵t(最終エラー ) = 0 0
対象レコード削除
end If
ウインドウを閉じる
とするといいでしょう。
ありがとうございます。
Loopを使って処理するのが面倒って、知りませんでした。
私のバージョンでは下記に記述します。
新規ウインドウ [スタイル: ドキュメント]
対象レコードの絞り込み [記憶する]
If [Get(最終エラー) = 0]
対象レコード削除 [ダイアログなし]
End if
ウインドウを閉じる [現在のウインドウ]
※対象レコードの絞り込みの内容
・検索条件の指定 処理:レコードの検索 条件:テーブル::選択: [="選択"]
※Shin先生が記述いただいた「Get(最終エラー ) = 0 0」ですが、その通りに入力すると「Get(最終エラー ) = 0 」になっておりました。
試しに実行しますと「このレコードは既に別のウインドウで変更中のため、このウインドウでは変更できません」というダイアログメッセージが出ております。
どうしたらよろしいでしょうか。ご教示お願い致します。
ほんとにうまくできてますか?
1行目を削除すると次に「残ったレコードの」2行目に移動するので、2行目が削除されないように見えます。他で編集中だとロックされて削除できないことがあるので、エラー処理を入れた方がいいでしょう。
ありがとうございます。
例えば、1行目と3行目、4行目、6行目の選択にチェックを入れた状態で実行してみると、たしかに残りますね...。困りました。
確かにエラー処理を入れる必要があるんですね。最初にエラー処理[オン]、最後にエラー処理[オフ]を入れました。
[OS:WIN10,VER:PRO14]
今、検索結果のリスト選択削除する方法を勉強しております。
[フィールド]
選択 数字
項目1 テキスト
項目2 テキスト
項目3 テキスト
[イメージ]※リスト形式
【選択削除】ボタン
選択 項目1 項目2 項目3
□選択 12345 S商店 りんご
□選択 24343 K事務所 いちご
□選択 12345 S商店 ばなな
□選択 24343 K事務所 みかん
□選択 12345 S商店 もも
↓
↓「12345」を検索実行する
【選択削除】ボタン
選択 項目1 項目2 項目3
□選択 12345 S商店 りんご
□選択 12345 S商店 ばなな
□選択 12345 S商店 もも
そこで りんごとももだけ選択し、【選択削除】ボタンをクリック→リスト削除したい。
【選択削除】ボタン
選択 項目1 項目2 項目3
☑選択 12345 S商店 りんご
□選択 12345 S商店 ばなな
☑選択 12345 S商店 もも
↓
【選択削除】ボタン
選択 項目1 項目2 項目3
□選択 12345 S商店 ばなな
スクリプトワークスペースの「選択削除」という名前で、下記に記述しました。
変数を設定[$i ; 値:1]
変数を設定[$cnt ; 値: Get (対象レコード数)]
Loop
Exit Loop If [$I > $cnt]
レコード/検索条件/ページへ移動 [ダイアログなし : $i]
If [テーブル::選択 = "選択"]
レコード/検索条件削除 [ダイアログなし]
End If
変数を設定 [$i ; 値: $i + 1]
End Loop
現在のスクリプト終了[]
上記のスクリプトを実行するとうまくできましたが、シンプル的なスクリプト記述は他にあればご教示いただきたいです。
私はもっと勉強したいし、役に立てることをしてあげたいと思います。
よろしくお願いいたします。
2回目のインポートは、単純に 追加 にしておいて、受注NO に常時ユニークの制限をつけておくのが簡単でしょう。
また、このインポートは、Excel ファイルからでも、1回目のインポートのテーブルからでも同じ事ですので、ファイル指定の手間を考えれば、自ファイルからの方が簡単でしょう。
Shin様のおっしゃる通りできました。
こんなことができるとはすごく信じられずとても嬉しいです。
ありがとうございます。
みなさまのご回答について、参考にしながら勉強してまいります。
ありがとうございました。
OS:Win10,VER:19
各テーブルへインポートについて、ご教示いただきたいと存じます。
EXCELには「受注データ」と「受注NO」のワークシートがあります。
「受注データ」ワークシート
受注日 受注NO ユーザー名 商品 数量 単価
2023/7/20 12345 ABC商店 いちご 1 120
2023/7/20 12345 ABC商店 みかん 1 150
2023/7/20 12345 ABC商店 りんご 1 130
2023/7/20 12346 ABC商店 ぶとう 1 110
2023/7/20 12347 ABC商店 ばなな 1 140
「受注NO」ワークシート
受注NO
12345
12346
12347
※拡張子「.xlsx」にて保存しています。
FileMakerでは「メイン」と「受注データ」のテーブルがあります。
・EXCEL「受注データ」ワークシート→FileMaker「受注データ」テーブルへインポート
・EXCEL「受注NO」ワークシート→FileMaker「メイン」テーブルの「受注NO」フィールドのみインポート
上記インポート方法に1つのボタンで制御したいですがうまくいきません。
【スクリプト編集】
--
#「受注データ」のインポート
レコードのインポート[追加;シフト JIS]
変数を設定 [$file; 値: Get (ファイルパス) ]
#「受注NO」のインポート
レコードのインポート[「$file」; 既存のレコードを更新;シフト JIS ]
--
間違っているのであればご指摘ください。
出来れば本日中に使いたいので、どなたがご教示いただけないでしょうか。
何卒よろしくお願いいたします。
win:10 / ver.18
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
前任者が1つのFileMakerファイルを作成・編集をしていましたが、定年のため引き継ぎされました。
私が修正・編集することに前任者の許可を頂きました。
1つのEXCELファイルに「入力用」「元データ」の2つのワークシートがあり、それぞれインポートをしています。
効率をよくするようにボタンを配置してインポートを完了させたいと考えています。
そこでみなさまにご教示いただくために下記に記述します。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
EXCELファイルはDドライブの実績フォルダに格納しています。(D:\実績)
今までのやり方では、
①FileMakerファイルを開いて、「ファイル>レコードのインポート」をクリック。
②「D:\実績\20211029.xlsx」を選択。
③「入力用」ワークシートを選択。
④インポート順ダイアログが表示され、「OK」ボタン押下。
⑤結果件数を表示
⑥「ファイル>レコードのインポート」をクリック。
⑦「D:\実績\20211029.xlsx」を選択。
⑧「元データ」ワークシートを選択。
⑨インポート順ダイアログが表示され、「OK」ボタン押下。
⑩結果件数を表示
⑪インポート完了
の流れでマウス操作していますが、かなり面倒で効率があまりよろしくないので、1つのボタンで一発で終わらせる方法はあるのでしょうか。
1つのボタンで一発で終わらせるには「スクリプトワークスペース」の編集が必要であることは理解しています。
項目②のファイル名を選択して記憶させ、項目⑦の手間を省くには変数の設定とかあると思いますが、変数の設定の仕方が分かりません。
出来ればサンプルがあればぜひお願いしたいと思います。ご教示のほどお願いいたします。
OS:Win10、Ver.12
下記、インポートファイルが存在しない場合のカスタムダイアログを表示させるにはどうしたらよろしでしょうか。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
今日は20202年12月23日とします。
デスクトップ上に「import_1223.xlsx」というExcelファイルがあります。
FileMakerでは「f1」「f2」「f3」というフィールドがあります。(Excelと同様にならべています)
今日の日付と一致する場合はインポート可、一致しない場合やファイルがない場合はインポート不可。といった感じで
カスタムダイアログを表示しようと思ってスクリプトを組んてみましたがうまくいきません。
下記の編み方が間違っているのでしょうか。
【スクリプト名】ファイルからインポート_条件
変数を設定 [$folderpass; 値;:Get (デスクトップパス)&"import_"&"Month(Get(日付))&Day(Get(日付))&".xlsx"]
If [$folderpass = 0]
カスタムダイアログを表示 ["error"; "インポートファイルが存在しません。スクリプトを終了します。"]
Else
レコードのインポート [ダイアログなし; 「$folerpass」;追加;シフト JIS]
End If
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
どなたかご教示いただけますと幸いです。よろしくお願いいたします。
レジストリの編集は、間違えるとOSの動作を壊すので、自力でわかる人以外にはお勧めできませんが。
FM14は手元にありませんが、18だとこの辺りに保存されてます。
HKEY_CURRENT_USER\Software\FileMaker\FileMaker Pro Advanced\18.0\Favorites
himadaneeさん
レジストリで調べればいいんですね。入れ替えの時にやってみます。
ファイルでなくレジストリにあります。
himadanee様
ご教示ありがとうございます。
ファイルではなくレジストリなんですね。
もっと詳しく説明お願いできないでしょうか。
よろしくお願い致します。
OS:win10 Ver:14
今秋にPCの入れ替えがあり、今まで「お気に入り」のファイルをバックアップしたいけどできるのでしょうか?
例えば、Cドライブのどこかに「お気に入り」のファイルが置いているのでしょうか。
(あれば、バックアップを取ろうと考えています)
先生方、ご教示のほどお願いいたします。
OnEnterトリガーのスクリプト設定で「スクリプト引数」のオプション設定はしましたか?
※スクリプト引数の値は、それぞれの自己フィールド番号(サンプルでは 1~5の数字)です。
Hiroさん、おはようございます。
上記にご教示いただきありがとうございます。
Hiro先生のご指摘の通りでうまくできました。
スクリプトやスクリプトトリガを参考に自作へ組み込み検証してみます。
大変参考になりました。もっと勉強してわからなかったら投稿させていただきます。
いろいろとありがとうございました。
Hiroさん案で解決しそうなので不要かも知れませんが......
サンプル)カーソル抜けたら消えるアップデート済
https://bit.ly/3cMuLTu横から失礼......
Hiroさんのサンプルはスクリプトトリガのスクリプトに引数を渡しています。
[オプションのスクリプト引数]という欄に番号が入っているでしょう。
これによって繰り返し位置を指定して説明文を表示しています。
Get ( スクリプト引数 ) はその引数を受け取るための関数です。
Mozさん、おはようございます。
上記についてご教示いただきありがとうございます。
サンプルまでアップデートしていただき恐縮です。
サンプルをやってみましたが、私の思う通りです。
スクリプトやスクリプトトリガを参考に自作へ組み込み検証してみます。
大変参考になりました。もっと勉強してわからなかったら投稿させていただきます。
いろいろとありがとうございました。
Hiro wrote:現状FMP12の標準機能で、#1の質問内容を実装したシンプルな作例サンプルです。
繰り返しグローバルフィールドに全ての説明元本を列挙しておき、
EnterとExitトリガーで個別スクリプト引数付き汎用スクリプトを起動制御・分岐操作しています。
別途・説明元本テーブルやリレーションなど要しませんのでシンプル構造です。●サンプル「フィールド説明.fmp12」→ https://1drv.ms/u/s!AlaCGhTKTWEOqBN6MIj … r?e=FhhgeC
Hiro先生、お久しぶりです。
上記にご教示いただきありがとうございます。
サンプルまで用意いただきありがとうございます。
早速、サンプルにて確認しました。私の思う通りです。
しかし、自分の作品にサンプルと同じように実装してみましたがうまくできませんでした。
(サンプルでのスクリプトリガ、スクリプトワークスペースを見ながらやってみたがダメでした)
私のどこかダメなのかわからなくなりました。
サンプルで何かいじることはおありでしょうか。
Hiro先生、ごめんなさい。
Get(スクリプト引数)とは何でしょうか。
ホームページにもよく出るのですがちょっと意味が分からないんです...。
現状FMP12の標準機能で、#1の質問内容を実装したシンプルな作例サンプルです。
繰り返しグローバルフィールドに全ての説明元本を列挙しておき、
EnterとExitトリガーで個別スクリプト引数付き汎用スクリプトを起動制御・分岐操作しています。
別途・説明元本テーブルやリレーションなど要しませんのでシンプル構造です。●サンプル「フィールド説明.fmp12」→ https://1drv.ms/u/s!AlaCGhTKTWEOqBN6MIj … r?e=FhhgeC
Hiro先生、お久しぶりです。
上記にご教示いただきありがとうございます。
サンプルまで用意いただきありがとうございます。
早速、サンプルにて確認しました。私の思う通りです。
しかし、自分の作品にサンプルと同じように実装してみましたがうまくできませんでした。
(サンプルでのスクリプトリガ、スクリプトワークスペースを見ながらやってみたがダメでした)
私のどこかダメなのかわからなくなりました。
サンプルで何かいじることはおありでしょうか。
ちなみに「ツールチップ」というのもあるが、時間がたつと自動的に消えてしまうので、長い説明を入れるのには向かない。
himadaneeさん、こんばんは。
ご教示ありがとうございます。
「ツールチップ」という機能がありますが、時間がたつと自動的に消えるしまうのであまりお勧めできないですよね。
何か方法ないでしょうか。
フィールド名を直接リレーションに使うことはできません。
代替案としてはフィールド名を格納するフィールドを作成して、
そのフィールドをリレーションに使用するなどがありますかね。
(例えばカーソルが入った際にフィールド名をフィールドに取得してリレーションを成立させる)全テーブルでやりたいならばフィールド名の重複を避けた方がよいでしょう。
完全修飾フィールド名なら重複しないでしょうがTO毎に設定が必要となり面倒です。ポップアップヘルプが楽だと思いますがダメですか?
ポップオーバーですが FileMaker 13 製品からの機能ですから利用できません。
FileMaker 14 製品からはプレースホルダテキスト(フィールドが空の場合のみ説明を表示)が利用できます。FileMaker 12 製品はサポートが終了している製品です(OSによってはインストールもできません)
業務で利用するならサポートされている最新版に更新されることをおすすめします。説明のテーブルとリレーションしてフィールド毎の説明を表示させています。
※カーソルが入ると説明が変わりますがカーソルが抜けても説明は消えません。
Mozさん、こんばんは。
上記にご教示いただき、またサンプルファイルまで作成いただきありがとうございます。
サンプルファイルを確認しました。すごく参考になりますが、できればカーソルを抜けると消えるようにしたい。
消えないと入力する側は混乱するでしょう。
フィールドのグローバルは複数のレコードを跨いでも一つの値だけしか保存されないので各レコード・ページ・レイアウトごとに内容を切り替えることは出来ません。
もしもフィールド内に直接何らかの説明文章を保存してあるのであれば、グローバル格納はしない方が良いでしょう。ポップアップヘルプ、もしくはフィールド横にポップオーバーボタンを配置して説明を入れたらいかがでしょうか?
ポップアップヘルプ
https://fmhelp.filemaker.com/help/12/fm … 10.32.htmlポップオーバーボタン
http://frds.html.xdomain.jp/images/2020-05-17-1.png解釈を間違えていたらごめんなさい
ウィンさん、おはようございます。
ご教示ありがとうございます。
確かにウィンさんのおっしゃる通り、グローバルは1つのフィールドに1つの値しか保存されないですね。
ポップオーバーという機能、初めて知りました。
ヘルプを読みましたが、レイアウト画面のツールバーですと「ボタン」しかないのでどうやって設定すればいいでしょうか。
ご面倒おかけしますがご教示いただけますか。
[ Generated in 0.010 seconds, 7 queries executed - Memory usage: 711.62 KiB (Peak: 766.52 KiB) ]