IDバッジアプリを作ろうとしています。ユーザーは、データ入力用のそのカードのテーブルを作成した後、カードを設計します。したがって、ユーザーからフィールド (列、テキスト、行、画像、チェックボックス、ラジオボタン、バーコードなど) を受け取った後、動的に外部データウィンドウを作成します。この目的でテーブルを作成した後、この作成されたデータウィンドウ (オンザフライ) を SQL SELECT データウィンドウに変換する必要があります。
どうすれば変換できますか?
IDバッジアプリを作ろうとしています。ユーザーは、データ入力用のそのカードのテーブルを作成した後、カードを設計します。したがって、ユーザーからフィールド (列、テキスト、行、画像、チェックボックス、ラジオボタン、バーコードなど) を受け取った後、動的に外部データウィンドウを作成します。この目的でテーブルを作成した後、この作成されたデータウィンドウ (オンザフライ) を SQL SELECT データウィンドウに変換する必要があります。
どうすれば変換できますか?
私なら、必要な SQL を使用して新しいデータウィンドウを作成します。UI を微調整する必要はありません (元の DW から救いたいのはそれだと思います)。新しい DWの一部を取得し、元の DWtable()
の一部を置き換えます。table()
括弧が適切に一致していることを確認してください。この部分には、多数の括弧が埋め込まれていますtable()
。疑わしい場合は、NotePad++ などを使用して、一致する括弧を見つけてください。
これは簡単に聞こえますが、それは簡単な部分でした。データセットの大きさにもよりますが、本当のキッカーは、データセットが要素ごと、データ型ごとに一致していることを確認することです。1 つずつオフにすると、事後に追跡するのが想像を絶するほど困難な方法でこれを台無しにすることになります。
幸運を、
テリー。
最初の「オンザフライ」の部分を見逃しましたが、同じアドバイスが当てはまります。プログラムでそれを行う必要がありますが、これはさらに困難です。列値式のような他の文字列はもちろん、SQL SELECT ステートメントに含まれる可能性のある括弧を無視する必要がない場合、一致する括弧を見つけることは非常に困難です。SELECT ステートメントの文字列に開き括弧があり、閉じ括弧がない場合に何が起こるかなど、予測するのが難しい多くのエッジ ケースをテストする必要がある可能性があります。次に、データ型の一致をプログラムで行う必要があります。これは、理論的には、各 DW の列部分を解析してデータ型を比較することを意味します。実際には(これは行っていません。アイデアを投げかけただけです)、両方の構文で Create() を実行し、2 つの間の ShareData() が失敗するかどうかを確認できます。(ShareData() では、integer や long など、ある程度の柔軟性が得られます。これらの違いが、これを行おうとしている他の領域で問題を引き起こすかどうかはわかりません。) もちろん、それは疑問を投げかけるかもしれません:外部と SELECT の 2 つの DW 構文セットを作成し、それらの間で ShareData() を実行しますか?
最初にテーブルを作成し、次に SQL からデータウィンドウを作成する方がはるかに簡単です。データウィンドウのビジュアル部分を作成/変更するために、すでに必要なコードのほとんどを使用できます。
この設計については慎重に検討することをお勧めします。遅かれ早かれ、ユーザーはテーブルを削除して再作成し、データを移行しない限り、既存のバッジ デザインのデータを変更したくなるからです。経験則として、エンド ユーザーにデータベースを設計させないことです。サポートするデータ型ごとにテーブルを作成し、それらを属性の識別子を使用してバッジにリンクします。ユーザーが行うことは、使用可能なデータ型の属性を追加し、名前を付けて、バッジに貼り付けることだけです。外部データウィンドウを保持し、サポートされている属性タイプごとにデータストアを使用してください。属性名を外部列名として使用すると、汎用コードを簡単に記述して、取得時に属性からバッジを移入し、属性をデータストアにコピーして保存できます。あなたが見てみるならpfc_n_cst_dwsrv.of_populatedddw
(パラメーターなしのバージョン) 列のデータ型を調べて、そのデータ型を処理するデータストアに要求をディスパッチし、行と列名 (属性名) を指定する以外は、基本的な考え方がわかります。移入します。保存は、DataStore に戻す値を DataStore に与えることを除いて、同じように機能します。データが変更されたかどうかを心配する必要はありません。DataStore は同じかどうかを判断するのに十分なほどスマートだからです。PFC を使用する場合、更新リストを DataStore に設定するだけで、PFC がそれらを処理します (この場合、DataStore には n_ds を使用します)。また、データストアの新しい行のバッジ ID を設定する必要があります。そのために n_ds のpfc_updatePrep
イベントを使用できます。