Ich versuche, eine Reihe von Tabellen zu durchlaufen aktualisieren Mein Haupttisch mit Informationen, aber aus einem unbekannten Grund wird dies nicht funktionieren. Siehe Code-Anhang unten:
Beispiel aus meiner Liste, in der meine Tabellen gespeichert sind:
DTs = {Datentabelle ("Sheet1"), Datentabelle ("Sheet2") ……}
// geöffnete Excel-Dateien in einem angegebenen Pfad funktionieren gut
Pfad = "$ DOKUMENTE \ 580501 \";
ftype = ".xlsx";
// Liste der Dateien erstellen, alle nicht übereinstimmenden Dateien entfernen, funktioniert einwandfrei
flist = Dateien im Verzeichnis ( Pfad ) ;
Zum ( i = N Artikel ( flist ) ich> 0 , ich--,
Ob ( !Endet mit ( flist [ ich ] ftype ) .
Entfernen von ( flist, ich )
)
) ;
d = N Artikel ( flist ) ;
// Importieren Sie alle Excel-Dateien aus dem Verzeichnis 580501 und speichern Sie sie in einer Liste
Während ( d> 0 .
i = 1 ;
dtt = Öffnen (….)
// Dieser Teil meines Codes funktioniert gut
DTs = Liste () ;
s = 1 ;
Zum ( i = 1 , i () , i ++,
Ob ( Datentabelle ( ich ) ! = "ISAC_STAT",
Einfügen in ( DTs, Datentabelle ( s ) ) ;
s = s + 1 ;
)
) ;
// Analyse aller offenen Tabellen in DTs
Zum ( i = 1 , i () , i ++,
dtt = Datentabelle ( DTs ( ich ) ) ;
// Ich muss eine bestimmte Tabelle "sheet1" und ein Update finden, bevor ich ein Update mit anderen Tabellen durchführen kann
// sheet1 enthält Informationen, die für den Vergleich mit anderen Tabellen erforderlich sind, sodass mein Hauptverzeichnis aktualisiert werden muss
// tabelle zuerst
Zum ( k = i, k <= N Tabelle () , k ++,
//ICH Denken Sie daran, wenn die Aussage mein Problem ist, aber ich weiß nicht warum?
// Ich habe mehrere Versionen dieser If-Anweisung ausprobiert:
// Enthält (Char (DTs [k]), Char ("Datentabelle (" Tabelle1 ")") == 1
// Enthält (DTs [k], "Tabelle1") == 1
// Enthält (DTs [k], "Data Table (" Sheet1 ")" == 1)
// aber nichts geht.
Ob ( Enthält ( Verkohlen ( DTs [ k ] ) , "Blatt1" ) == 1 .
Datentabelle ( "Mein Tisch" ) << Aktualisieren (
Mit ( Datentabelle ( "Blatt1" ) ) .
Spalten stimmen ( : Charge =: Los ) .
Fügen Sie Spalten aus der Update-Tabelle hinzu ( Keiner )
) ;
) ,
) ;
// Ich denke dies Wenn die Aussage die Ursache für mein Problem ist, weiß ich nicht warum?
Ob (
DTs [ ich ] ! = "sheet1" und DTs [ ich ] ! = "sheet2" und DTs [ ich ] ! = "sheet3" & DTs [ ich ] ! = "sheet4",
Versuchen (
Datentabelle ( " Mein Tisch " ) << Aktualisieren (
Mit ( DTs [ ich ] ) .
Spalten stimmen ( : Charge =: Lot | : Charge =: Prüflos ) .
Fügen Sie Spalten aus der Update-Tabelle hinzu ( Keiner )
);
);
// Ich verwende den gleichen Aktualisierungsbefehl wie oben, jedoch mit unterschiedlichen Spalten
…
);
Hier ist ein einfacher Code-Ausschnitt, der funktioniert:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// dt = DataTable("Big Class");
If (Contains(Char(dt),"Big Class"),
show("found")
,
show("not found")
)
Da Wendy darauf hinweist, dass die Contains-Funktion zwischen Groß- und Kleinschreibung unterscheidet, würde ich normalerweise den Fall erzwingen, z
If (Contains(LowerCase(Char(dt)),"big class"),
Hallo allerseits und vielen Dank für Ihre schnellen Antworten.
Wie gesagt, die DTs-Liste speichert Zeichenfolgen mit Werten wie Datentabelle ( "Blatt1" ) daher war es mir gelungen, die verschachtelte for-Schleife zu implementieren, in der ich nach zwei spezifischen Tabellen suche.
Wenn ich jedoch nicht möchte, dass bestimmte Tabellentypen verwendet werden und dies möglicherweise der Fehler ist, verwende ich die enthaltenen Funktionen, um einen beliebigen Zeichenfolgenwert in DTs mit einem bestimmten Schlüsselwort abzugleichen.
zum Beispiel:
wenn (DTs [i], "Soda") oder enthält (DTs [i], "Wasser") oder enthält (DTs [i], "food_1"),
nichts tun
.
sonst aktualisieren Sie die Haupttabelle.
Beachten Sie, dass es Fälle gibt, in denen wir sowohl die Tabelle food_1 als auch die Tabelle food_2 haben. Hier sollten wir food_1 außer Acht lassen, jedoch food_2 verwenden.
Verwende ich die enthaltende Funktion falsch?