Ich verwende eine MS-ACCESS-Datenbank. Aus dem Projekt verwende ich und einige andere Fragen die Tabelle NOEUDS und INFRA (die aktualisiert werden sollte):
Tabelle 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
TABELLE NOEUDS:
NOEUD TYPE_MAT N_AMONT
C021 COF 100
C022 COF 229
C023 COF 130
C002 COF 111
Ich möchte eine Abfrage erstellen, die auf NOEUDS die Knoten C* überprüft, die in der INFRA-Tabelle fehlen, wenn nicht, sollte ein neuer eingefügt werden. Das Problem ist das Feld RECNO, das als Kontrolle fungiert und nicht dupliziert werden kann (kein Primärschlüssel, da die gesamte DB nur ein Repository für das Programm ist, das sie steuert). Alle Felder sind Text und RECNO ist eine fortlaufende Zählung mit HEX-Zahlen, wie gezeigt.
Ich habe die Abfrage zur Auswahl verwendet:
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)));
Das Ergebnis war:
9 C021 F
9 C022 F
9 C023 F
SOLLTE SEIN:
9 C021 F
A C022 F
B C023 F
Ich brauche Hilfe, damit ich die richtige RECNO in hexadezimaler Zählweise einfügen kann, nachdem 00000019 zu 0000001A übergeht und so weiter.
vielen Dank im Voraus
UPDATE 1:
Das von uns verwendete Programm verwendet eine Access-Datenbank als Speicher. Wenn ich mit dem Programm einen Ort hinzufüge, muss ich weitere Informationen über die Menüs eingeben, die für die Karten und die Bauinformationen benötigt werden. Das Problem ist, dass viele Informationen redundant sind und das Programm sie nicht automatisch verarbeiten kann. Ich versuche, die möglichen Informationen mit Hilfe von Abfragen einzugeben.
Jedes Mal, wenn ich ein Noeud in die Noeuds-Tabelle einfüge, muss ich eine Zeile in die INFRA-Tabelle einfügen, die nur die RECNO (fortlaufende Zählung ab der letzten), das NOEUD und einige andere Informationen enthält (um das Autocad-Tabellen-Tag zu vervollständigen). Da ich Hunderte von Cxxx-, Bxxx-, Pxxx- und Gxxx-Anlagen habe, kann ich für jedes Projekt einige Stunden langweiliger Arbeit aufwenden.
Ich benötige Hilfe bei der Zählung einer sequentiellen Methode zum Hinzufügen von RECNO für jedes NOEUD, das in der Tabelle NOEUDS gefunden und in die Tabelle INFRA eingefügt wird.
UPDATE 2:
Ich füge jedes Nudelholz von Hand ein. Ist es möglich, in einer Weise zu verbinden, dass es die Liste von den noeuds, die ich einfügen möchten und insead von tun 1 durch 1 nimmt es die Liste und tut in einer Reihenfolge?
die 2 Abfragen sind folgende:
Ausrüstungen, die ich am Tisch INFRA hinzufügen möchte:
SELECT NOEUDS.NOEUD FROM NOEUDS WHERE (((NOEUDS.NOEUD) Like "C*" und (NOEUDS.NOEUD) nicht in (SELECT NOEUD FROM INFRA)));
Einsetzen von Hand:
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=[CHAMBRE? EINFÜGEN]);