MS-ACCESSデータベースを使用しています。私が使用し、他のいくつかの質問をしたプロジェクトから、テーブルNOEUDSとINFRA(更新する必要があります):
テーブルINFRA:
RECNO - NOEUD - SECURISE
00000008 C002 F
00000005 C009 F
00000001 C035 F
00000002 C001 F
00000003 C036 F
00000006 C012 F
00000007 C013 F
テーブルノード:
NOEUD TYPE_MAT N_AMONT
C021 COF 100
C022 COF 229
C023 COF 130
C002 COF 111
INFRAテーブル内に欠落しているノードC*をNOEUDSでチェックするクエリを作成したいのですが、そうでない場合は、新しいノードを挿入する必要があります。問題は、コントロールとして機能し、複製できないRECNOフィールドです(すべてのDBは、それを制御するプログラムのリポジトリにすぎないため、主キーではありません)。すべてのフィールドはテキストであるため、RECNOは、示されているようにHEX番号を使用した連続カウントです。
クエリを使用して以下を選択しました:
SELECT (SELECT MAX(CINT(INFRA.RECNO))+1 AS N FROM INFRA),
NOEUDS.NOEUD, "F" AS Expr2
FROM NOEUDS
WHERE (((NOEUDS.NOEUD) Like "C*"
And (NOEUDS.NOEUD) Not In (SELECT NOEUD FROM INFRA)));
結果は次のとおりです。
9 C021 F
9 C022 F
9 C023 F
すべきこと:
9 C021 F
A C022 F
B C023 F
00000019が0000001Aに渡された後、16進数で正しいRECNOを挿入できるように、これについては助けが必要です。
前もって感謝します
更新1:
私たちが使用するプログラムは、Accessデータベースをストレージとして使用します。プログラムを使用してnoeudを追加するときは、マップに必要なメニューを使用して、構築された情報として、さらにいくつかの情報を挿入する必要があります。問題は、多くの情報が冗長であり、プログラムがそれを自動的に処理できないことです。私は粕を動かし、クエリを使用して可能な情報を挿入しようとしています。
noeudsテーブルにnoeudを挿入するたびに、RECNO(最後のテーブルからの順次カウント)、NOEUD、およびその他の情報(autocadテーブルタグを完成させるため)のみを含む行をINFRAテーブルに挿入する必要があります。私は何百ものCxxx、Bxxx、Pxxx、Gxxxの機器を持っているので、プロジェクトごとに数時間の退屈な作業をします。
INFRAテーブルに挿入されるNOEUDSテーブルで見つかったNOEUDごとにRECNOを追加するシーケンシャルな方法を数えるのに助けが必要です。
更新2:
それぞれのヌードを手で挿入しています。挿入したいnoeudsからリストを取得し、1つずつ実行する方法で参加することは可能ですか?リストを取得して順番に実行しますか?
2つのクエリは次のとおりです。
テーブルINFRAに追加したい機器:
SELECT NOEUDS.NOEUD FROM NOEUDS WHERE(((NOEUDS.NOEUD)Like "C *" And(NOEUDS.NOEUD)Not In(SELECT NOEUD FROM INFRA)));
手による挿入:
INSERT INTO INFRA(recno、NOEUD、SECURISE)SELECT(SELECT Right(String(8、 "0")&Hex(Max(Val( "&H"&RECNO))+ 1)、8)AS N FROM INFRA)、NOEUDS .NOEUD、 "F" AS Expr2 FROM NOEUDS WHERE(NOEUDS.NOEUD = [INSERT CHAMBRE?]);