1

編集4:MS InfoPathの質問

私は最終的に自分自身の問題を解決することができました。下記のチェックマークの回答を参照してください。

編集3: 私は本当にこれを解決するに近いと感じる、ただ一つのハードルが私の方法で残っている。フィルターは、リストボックス、コンボボックス、またはドロップダウンリストボックスでのみ適用できます。私は自分の情報をフィルタリングすることができますが、私がフィルタリングした情報のMAX値を取得する必要があり、どのようにこれを行うのかわかりません。私は最大の機能を試して、すべて私が得ているのはNaNです。

screenshotを参照してください。

現在の年の#s +1のデフォルトはNaNですが、フィルタリングされたドロップダウンから数値を選択すると、それが機能します。リストの最大値にデフォルトする必要があります。 別screenshotを参照してください、私は最大のレポート番号をデフォルトとする方法を見つけ出すように見えることはできません任意の提案やアイデア

編集2:。。? 質問はまだ未解決のままに最も最近の編集を移動するために行きます。上部。

編集1: 私たちはKtharsisのアプローチで行くようです。 MAX(@ID)+1を取得する前に、1年前にフィルタを使用することを提案しました。私はまだこれを実装する方法がわかりません。私たちのシーケンシャルIDが毎年リセットされるように、MAX(@ ID)+1を取得する前にSharepointで年をフィルタリングする式がありますか?私はこれに答えると、別のアップデートを投稿します。

新しい年にリセットされる固有の番号カウンタIDを作成しようとしています。私は数字のカウンターの部分がダウンしているが、私は新しい年が始まるときにそれをリセットさせる方法を知らない。

例:2010から0057まで、2010から0058まで、2010から0059 ..... 2011から0001まで、2011から0002など

代わりに、それだけでシーケンスを続けています。これを実装する方法に関するアイデア?好ましい方法は、プログラミングを使用しない方法です。私はこれをSharePointサイトと統合しており、SharePointのIDフィールドから実際のシリアル番号を取得しています。私は自分の数値シーケンスにMAX(ID)式を使用しています。

**このサイトを初めて使用しているので、この質問がここに属していないと申し訳ありません。

答えて

1

私はついにそれを理解しました! Ktharsisは私にいくつかのヒントを教えてくれましたが、私が実際に働いていた場所に私の質問に答えませんでした。それゆえ、私は自分の質問に答えて、私がしたことを皆さんに見せています。

新しい年ごとに自動生成番号をリセットする方法: ドロップボックスフィルタの使用に関する以前の編集をすべて無視します。それのどれもうまくいきません。これはあなたが必要なものです。提出ルールでは、共有ポイントの場所からデータを照会するルールを追加します(このステップが必要かどうかは完全には分かりませんが、傷つけることはありません)。下の別のルールを「フィールド値を設定する」に追加してください。 [フィールド]オプションの下の[番号カウンターフィールド]を選択します。 "バリュー" オプションでは

、次のように入力します。

MAX(@Report_Number [@year =サブ-前(今日()、 " - ")])+ 1

これが得ますCURRENT年のレポート番号を最大にして1を追加します。したがって、レポート番号20があなたのシェアポイントデータベースの中で最も高いレポート番号であれば、今度は21を提出するこのレポートを作成します。これは毎年開始されます。

私のフォームでは、「ナンバーカウンターフィールド」は基本的に私の「レポート番号フィールド」にフィードし、必要に応じてゼロを追加します。たとえば、レポート番号2の場合は、レポート番号0002が表示されます。

新年のレポートがない場合は何が起こるのか試してみましたが、しかし、この直前にルールを追加して最大レポート番号を見つけてください。ゼロの場合は、このレポート番号を1にしてください。

私の解決策についてご質問がありましたら、私にお知らせください。私は質問を投稿する前にこの問題について数ヶ月を費やしました。助けてくれた皆様に感謝します。

2

InfoPathでは、今年の式をこのように数式で得ることができます(プログラミング不要)。

substring(today(), 1, 4) 

ただし、システム設定が米国英語でない場合は形式が異なる場合があります(ユーザーのシステム設定が異なる場合はお勧めできません)。

SharePointから正しいデータを取得するには、リストをフィルタリングする必要があります。あなたは現在、すべてのリストデータを求めてMAX(ID)を取得しています。このリストをフィルタリングして現在の年だけを取得してからMAX(ID)を取得すれば、正しいシーケンス番号が得られます。

+0

Ktharsis、これは正しいアプローチのようです。私は質問がありますが、どのようにこのフィルタを適用しますか?私はSharePointでリストをフィルタリングしているだけです(これはあまり意味がありません。なぜなら、すべてのIDが順番に並び変わってしまいます)、あるいはMAX(ID)式に何らかの関数を追加しているからですInfoPathでフィルタを適用しますか?後者を使用している場合、MAX(ID)をポーリングする前にInfoPathに関数を追加して年間フィルタリングするにはどうすればよいですか?私はあなたの答えを待っている間にいくつかのことを真っ先に試してみます。 PS - 遅れて申し訳ありません。 – Tristan

+0

私はあなたが少しのコードに入る必要があると信じています。 IP/SPは便利ではありませんが、データソースの接続/コマンドのプロパティを簡単に変更して、データを取得する前にフィルタリングすることができます。すでにフィルタリングされているビューをSPに設定し、それらに接続することもできます。私はコードに頼るだろう - それは非常にあまりではなく、スクリプト(管理されたコードは不要)で直接書くことができ、あなたが既に設定したデータソースに触れているのでフォームのセキュリティレベルを変更しない。 – ktharsis

+0

代わりに私はちょうど考えていた - (あなたのIDを格納するフィールド上のあなたのフィルタをベースにしていないバージョン)。だからあなたはそれを格納する方法(おそらく文字列)に応じて、文字列の操作を行うことができます - 最初の4文字が現在の年である最後の4文字のMAX(数字に変換され、0で埋められます)。 – ktharsis

0

私はここで何かを逃しているかもしれませんが、sharepointから連続番号を取得している場合は、新しいリストやライブラリを作成しない限り、その番号は常に増加しませんか?あなたがそうするならば、番号は0から始めなければなりません。

+0

可能であれば、すべてのインフォパースフォームを1つのリストにまとめたいと思います。 MAX(ID)以外にシーケンシャル番号を取得する別の方法がある場合、私はそれをすべて揃えています。助言がありますか?シーケンシャル番号は毎年リセットする必要があることを覚えておいてください(プログラミングを使わない方が望ましい方法です)。 PS - 応答が遅れて申し訳ありません。 – Tristan

+0

トリスタン、私は解決策があるかもしれないが、私は今朝忙しい。私はそれが前にない場合は朝に投稿されます。 –

+0

トリスタン、私は働くことが何もできませんでした。 DateTime列であるYearという名前の新しい列を作成しました。 cacluatedコラムで私はその年を引っ張った。これはあなたの番号の最初の部分です。その後、counterという別の列を作成しました。カウンターコラムが次の数値を含むことを意図していましたが、この作業を行うことはできませんでした。それを行う方法があれば、次のステップは年の回にその番号をリセットすることです。私はちょうどカウンターコラムを自動入力にする運がなかった。ごめんなさい。 –