みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
テーブルと関連テーブルを自身のファイルの別テーブルにインポートしたいと思っています。
レコード削除する際は、削除フラグを立てています。
関連テーブルの削除フラグが立っていないレコード(つまり0)だけを抽出して別テーブルにインポートしたいです。
レイアウト切り替え[Aテーブル;]
スクリプト実行
検索モードに切り替え
フィールド設定[Aテーブル::削除フラグ0]
検索実行
レイアウト切り替え[Bテーブル]
スクリプト実行で検索モードに切り替えて検索しているのですが、関連テーブルのすべてを検索してくれません。
どうすれば、やりたいことができるのでしょうか。
> 削除フラグが立っていないレコード(つまり0)
「立っていない」は 0 なのですか?
空白ならばそれは 0 ではないですが。。
Offline
「削除フラグが立ってないレコード(つまり0)」ではなく、
「削除フラグが0」が正しいです。
では、
> 関連テーブルのすべてを検索してくれません
これはどういうことでしょう?
検索条件に一致しているが検索されないレコードが有る?
手作業で検索しても結果は同じでしょうか?
Offline
2つのテーブルを、それぞれ別の2つのテーブルにインポートしたい、じゃないんでしょうか。
スクリプトにはテーブルが2つしかでてきませんが...
削除フラグは両方のテーブルにあると思うのですが、それとも関連テーブルだけに使ってるんですか?
テーブルの全レコードと、関連テーブルの削除されてないレコードをインポートですか?
それと、スクリプト内の2行目の「スクリプト実行」が意味不明です。実行するスクリプトの内容は?
AテーブルにNo.1、No.2、No.3とレコードがあるとします。(リスト形式で作成しています。)
A'テーブルを関連テーブルとします。(フォーム形式で作成しています。)
AテーブルのNo.1を選択するとA'テーブルの関連レコードに移動します。
検索実行時にA'テーブルのNo.1のみ削除フラグの検索実行しそれ以外のA'テーブルのNo.2やNo.3の検索を実行せずそのままインポートされてしまいます。
現在の話にスクリプトを書き直すと
レイアウト切り替え[A'テーブル;]
スクリプト実行
検索モードに切り替え
フィールド設定[A'テーブル::削除フラグ0]
検索実行
レイアウト切り替え[Bテーブル]
理想は、検索実行時にA'テーブルを一覧にして削除フラグ0を検索して検索結果をBテーブルにインポートしたいのですが、難しいでしょうか?
削除フラグは両方のテーブルにあると思うのですが、それとも関連テーブルだけに使ってるんですか?
→両方のテーブルで使っています。
テーブルの全レコードと、関連テーブルの削除されてないレコードをインポートですか?
→テーブルも関連テーブルもどちらも削除されていないレコードをインポートです。
テーブルの削除されてないレコードをインポートする方法は問題ないのですが、
関連テーブルの削除されていないレコードのインポートの方法が分からないため質問しました。
それと、スクリプト内の2行目の「スクリプト実行」が意味不明です。実行するスクリプトの内容は?
→スクリプト実行の内容は、下記です。
検索モードに切り替え
フィールド設定[A'テーブル::削除フラグ0]
検索実行
レイアウト切り替え[Bテーブル]
ではなく、
関連レコードへ移動[関連レコードのみを表示;現在の対象レコード内のすべてのレコードを照合]
にしてみてください。
Offline
Aテーブルの対象レコードの関連レコードを
A‘テーブルで検索し、その中から削除フラグフィールドが0を絞り込みたい。
ならば、
関連レコード移動のオプションに
現在の対象レコード内のすべてのレコードを照合
があります。
さらに、
絞込検索は
検索実行
ではなく
対象レコードの絞り込み
を使います。
書かれたスクリプトの説明が
理解できていませんが。。
Offline
わかりづらくてすみません。
情報を整理します。
AテーブルとA'テーブルはリレーションでつながれていて
AテーブルのNo.1のレコードを選択するとA'テーブルに関連レコードで移動します。
AテーブルとA'テーブルのデータをBテーブルにインポートします。
Bテーブルのボタンで下記スクリプトを実装します。
レイアウト切り替え[Aテーブル]
スクリプト実行
レコードのインポート[ダイアログあり:オフ; テーブル:Bテーブル;ファイル名(自身のファイル);追加; シフト JIS]
レイアウト切り替え[Bテーブル; アニメーション:なし]
スクリプト実行の内容は、
検索モード切り替え[一時停止:オフ]
フィールド設定[Aテーブル::削除フラグ;0]
検索実行
A'テーブルも同じスクリプトになります。
どのように変更したらいいのでしょうか。
>A'テーブルも同じスクリプトになります。
同じではなく、Aテーブルになってるところ(レイアウト切り替えとフィールド設定)をA'にしたスクリプトを作らないとだめなのでは?
(レコードのインポートのステップもソースが違うので同じではだめですが、スクリプトの見た目ではわからないですね...)
2つの違うテーブルを1つのBテーブルにインポートするというのがよくわかりませんが、AとA'の共通部分だけインポートするのか、両方のテーブルの全フィールドをBテーブルに作ってるのか??
全く別の考え方。
テーブルB B’のリレーションで、B’ 側のレコードを、関連レコードが削除されたら削除する設定にしておきます。
どちらのテーブルのレコードを抽出せずにインポートしてしまいます。テーブルBで削除するレコードを抽出して削除します。
Offline
> スクリプト実行の内容は、
> 検索モード切り替え[一時停止:オフ]
> フィールド設定[Aテーブル::削除フラグ;0]
> 検索実行
関連レコードが対象レコードになっていて、
そこからこから削除フラグで絞り込みたいのでしたら、
検索実行
ではなく、
対象レコードの絞り込み
を使います。
検索とインポート、どちらが悪いのか、
分けて検証したほうがいいですよ。
Offline
各テーブルのフィールド構成を書き出してみてください。
> AテーブルとA'テーブルのデータをBテーブルにインポート
とありますが、1テーブルにインポートするのですか。
また、テーブルA と A' のリレーションキーは何になっていますか。
ひょっとして、テーブルA をインポートしたら、A' もインポートできる、と思っていませんか。
Offline
未だに何をしたいのかがわかりません。最初に
>関連テーブルのすべてを検索してくれません。
といってるから、関連レコードの中から絞り込みたいというわけではなさそうですが...
#6で
>AテーブルのNo.1を選択するとA'テーブルの関連レコードに移動します。
と書いてますが、普通は選択しただけでは移動しないので、何かonRecordLoadとかのトリガスクリプトが設定してあって、インポートのスクリプトの実行中にも動いてしまってるのが問題なのかなあ。
テーブルBにもB’があるのかどうか、も書いてないし。
無いのだとしたら#11で言ったように違うテーブルを1つのテーブルにインポートできるのかが疑問だし、
あるのだとしたら、なぜ削除レコード以外だけ(すべて)別のテーブルにインポートする必要があるのか、何か無用な作業をしようとしている感じがなくもない。
別のファイルなら、削除レコードがない状態のファイルを作りたい、という風に読み取れますが...
それだったら、ファイルの複製から削除レコードを削除した方がインポートするより簡単でしょうね。
AテーブルもA'テーブルもBテーブルにインポートします。
(フィールドはそれぞれ異なりますが、Bテーブルにインポートする際にインポートの設定すれば別テーブルからのインポートは可能です。
要は、テーブルを移動をインポートで行っています。)
A'テーブルを複製して表形式のテーブルを作成して
そこから削除フラグを検索してBテーブルにインポートすることができました。
解決になってますけど、
>A'テーブルを複製して表形式のテーブルを作成して
表形式というのはテーブルではなくレイアウトの属性なので、表形式でもフォーム形式でもデータや検索結果の対象レコードは変わりませんから、何か勘違いが残ってると思います。
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 558.7 KiB (Peak: 579.24 KiB) ]