みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
旧サイトより引越してきました。
>チポさん
リレーションは組みました。
>対応予定タイムスタンプフィールドは、関数
Timestamp
でタイムスタンプを作ります。
ここはTimestamp(対応予定日,対応予定時間)
でよろしいですか?
ここだけ見た方には何がなんだか、
でしょうから、あちらのスレの抜粋を表示します
ぼぶ
対応予定時間になったら、ダイアログボックスを表示させるのではなく、
対応予定者に対し、自動でメールを送信する仕組みに変更したいのですが、可能でしょうか
チポ
現在のタイムスタンプより大きくて、その1時間後より小さいレコードを検索して、
その対象レコード全てメール送信。
一定間隔で検索に問題有るのなら、グローバルフィールドを二つ作り、
上記の範囲のリレーションで関連レコードの有無を見てもいいでしょう。
ぼぶ
また自動でメールを送信しようとすると、
「プログラムによって電子メールメッセージが・・・」
とoutlook側で警告が出てきて自動で送信されません。
チポ
タイムスタンプフィールド・グローバル格納を二つ作り、
仮にsgとegと命名します。
リレーション
sg <= 対応予定タイムスタンプ
and
eg >= 対応予定タイムスタンプ
として、
sg に Get ( タイムスタンプ )
eg に Get ( タイムスタンプ ) + 3600
を入力するとそれが求める時間の範囲ですから、
リレーションの関連レコードが有ればそれがメールを送るべきレコードです。
Hiro
Outlookは制限解除できません。
代案は、
・外部メーラでなく内部SMTP送信機能を利用するか、
・解除可能なOutlookExpressなどをデフォルトメーラーに替えるとか。
ぼぶ
対応予定タイムスタンプとは、現在あるフィールド「対応予定日」&「対応時間」で問題ないでしょうか?
> sg に Get ( タイムスタンプ )
> eg に Get ( タイムスタンプ ) + 3600
> を入力するとそれが求める時間の範囲ですから、
ここは「sg・ng」のフィールドの計算値に入力すればいいのでしょうか?
> リレーションの関連レコードが有ればそれがメールを送るべきレコードです。
どこで確認すればよろしいのでしょうか?
チポ
> リレーション
> sg <= 対応予定タイムスタンプ
> and
> eg >= 対応予定タイムスタンプ
リレーションシップグラフで、
現在のテーブルをコピーして現在のテーブルのsgと、
そのコピーの対応予定タイムスタンプフィールドとを結びます。
次に、
結んだ線の中央に有る小さな長方形のマスをダブルクリックで
リレーションシップ編集窓が開きます。
その窓で、
sgと対応予定タイムスタンプがハイライトになってその間が「=」ですよね。
その「=」を「≦」に変更し「変更」ボタンをクリック。
次に、
eg >= 対応予定タイムスタンプ
を作って「追加」をクリック。
これでリレーションが完成します。
対応予定タイムスタンプフィールドは、関数
Timestamp
でタイムスタンプを作ります。
Offline
> Timestamp(対応予定日,対応予定時間)
Timestamp( 対応予定日 ; 対応予定時間 )
ですね。
で、スクリプトになります、その考え方。
フィールド設定 ( sg に Get ( タイムスタンプ )
フィールド設定 ( eg に Get ( タイムスタンプ ) + 3600) //これは計算フィールドとしてもいいですね。
If[IsValid (リレーション::適当なフィールド)] //関連レコードの有無の判定
関連レコードへ移動
メール送信のステップ
End If
これでいいでしょう。
Offline
チポさんありがとうございます。
>フィールド設定 ( sg に Get ( タイムスタンプ )
フィールド設定 ( eg に Get ( タイムスタンプ ) + 3600) //これは計算フィールドとしてもいいですね。
If[IsValid (リレーション::適当なフィールド)] //関連レコードの有無の判定
関連レコードへ移動
メール送信のステップ
End If
>If[IsValid (リレーション::適当なフィールド)] //関連レコードの有無の判定
関連レコードへ移動
この部分をもう少し詳しく教えていただけないでしょうか?
大変お手数お掛け致しますが宜しくお願いします。
Offline
すみません。。。
それ以前の問題でして。。。
>If[IsValid (リレーション::適当なフィールド)] //関連レコードの有無の判定
ここの組み方がわかりません。
申し訳ございません。。。
> If[IsValid (リレーション::適当なフィールド)]
このフィールドは、例えば、
リレーション先のテーブル名::対応予定タイムスタンプ
など、必ず入力が有るフィールドなら何でも可です。
IsValid関数は
ヘルプ等お調べください。
関連レコードの有無は、関数
not IsEmpty
Count
などでも判定できますね。
Offline
> If[IsValid (リレーション::適当なフィールド)]
このフィールドは、例えば、
リレーション先のテーブル名::対応予定タイムスタンプ
など、必ず入力が有るフィールドなら何でも可です。
関連レコードの有無は、関数
not IsEmpty
Count
などでも判定できますね。
大変申し訳ございません。
何も理解できません。。。
上記の通りに、それっぽく組んだのですが、今いるレコードしか送信してくれないどころか、
時間なんてまったく無視です。。。
困ったもんです。。。
リレーションができているのか、から確認しましょう。
リレーションを書いてみてください。
Offline
チポさんありがとうございます。
まずフィールドを[フィールドタイプ:タイムスタンプ][グローバル格納]をふたつ作成
仮に名前を「sg」「eg」で作成
リレーション
「sg」 <= 「対応予定タイムスタンプ」
AND 「eg」 >= 「対応予定タイムスタンプ」
で組んでおります。
> リレーション
> 「sg」 <= 「対応予定タイムスタンプ」
> AND 「eg」 >= 「対応予定タイムスタンプ」
このときのテーブルは
左側がデフォルト、右側がコピーになっていますか?
なっていれば、
例えば計算フィールドを作り、その計算式を
IsValid (テーブルコピーの名前::対応予定タイムスタンプ)
を作って、sg,egに適当なレコードの対応予定タイムスタンプを挟む値を入力してみてその結果を見てください。
挟まっているレコードには1
そうでないレコードには0が入力されます。
Offline
>左側がデフォルト、右側がコピーになっていますか?
なっております。
>なっていれば、
例えば計算フィールドを作り、その計算式を
IsValid (テーブルコピーの名前::対応予定タイムスタンプ)
を作って、sg,egに適当なレコードの対応予定タイムスタンプを挟む値を入力してみてその結果を見てください。
挟まっているレコードには1
そうでないレコードには0が入力されます。
なりません。。。
全て1が返ってきます。。。
何が考えられるでしょうか?
挟まっているレコードには1
そうでないレコードには0が入力されます。
ちょっち違う。
挟まっているレコードがある場合には1
そうでない場合には0が入力されます
送信するレコードがあるかどうかの判定ですから。全て1で正しいです。
送信するレコード自体がどれだかわかるのは、「関連レコードへ移動」した後です。
だんだん発言が増えてきたので、「解決」マークがないとすぐに埋もれてしまいそう...
globalさんありがとうございます。
というとあっているのでしょうか?
関連レコードへ移動は、何を入力すればいいのでしょうか?
あってます。
関連レコードの取得元:テーブルコピーの名前
レコードの表示に使用するレイアウト:<現在のレイアウト>
結果オプション:関連レコードのみを表示
現在のレコードのみ照合
globalさんありがとうございます。
かなりそれっぽい動きするようになりました!
しかし同じレコードを送信し続けてしまいます。
送信したレコードにはフラグを立てるようにしたのですが、
送信済のレコードを再度見に行き、止まってしまいます。
> 全て1が返ってきます
ああ、ごめんなさい。
確認方法を全く考え違いをしていました、そうなることも有りますね。
関連レコードへ移動
で関連レコードだけが対象レコードとなっているか確認ですね。
> しかし同じレコードを送信し続けてしまいます
メールを送信のオプションで、
複数の電子メール(対象レコード内の各レコードにつき1つ)
が有ります。
Offline
返信が遅くなってしまいまして、大変申し訳ございませんでした。
チポさんありがとうございます。
複数の電子メールにチェックを入れたのですが、
1度送信した後も、同様に同じメールを送信しようとしてしまいます。
どうすればよろしいでしょうか?
> 複数の電子メールにチェックを入れたのですが、
> 1度送信した後も、同様に同じメールを送信しようとしてしまいます
どういうことでしょう?
一つの宛先に複数回送信?
Offline
>一つの宛先に複数回送信?
左様でございます。
現在、該当の案件が2件あった場合、
案件1メール送信 ⇒ 案件2メール送信 ⇒ 案件1メール送信 ⇒ 案件2メール送信
と無限ループしてしまいます。
結局SMTP送信にしたんでしょうか。
その場合は「複数の」だと送信エラー時にどこへ送れたのかわからなくなるので、1件ずつ送信したほうがいいです。
Loopの中で次のレコードへ移動してないのでは。
「複数の」場合は全レコード1ステップで送信するので、Loopは不要ですが。
Offline
>結局SMTP送信にしたんでしょうか。
すみませんこの部分はクリアになっておりません。
SMTPにしてもエラーが出て弾かれてしまいます。
複数ではない場合、Loopを使用すれば、1件ずつ送信されるのですね。
やってみます。
Hiroさんの助言に有る様に、
メーラーを変えるかSMTPで、
1件の送信ができる様にするのが先じゃないかな。
Offline
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 571.51 KiB (Peak: 592.41 KiB) ]