<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Das ist vielleicht eine wirklich einfache Frage, aber nach langem Suchen und Testen komme ich nicht dahinter.Wie erhalte ich die Spaltennummer für eine bestimmte Spalte, wenn ich nur den Spaltennamen aus einem Spaltendialogfeld kenne?
Minimierter Code:
dlg = Column Dialog( dlg_firstParam = ColList( "First Parameter"));
firstParam = dlg["dlg_firstParam"][1];
ich = 5; // Dies ist ein Testfall.Angenommen, ich wähle die fünfte Spalte im obigen Dialog aus.Wenn das funktioniert, würde ich eine Schleife für i = 1 an ncol() schreiben und den Spaltennamen (i) anhand des ersten Parameternamens testen ... aber es funktioniert nicht.
show(column(i)); // gibt zurück: Column("Date");
show(firstParam); // gibt zurück: :Datum;
show(columnName(i)); //gibt zurück: Datum;
//Ok, angesichts der beiden obigen Zeilen denke ich, dass ich in der Lage sein sollte, den Doppelpunkt am Anfang der Zeichenfolge in :Date; zu entfernen. und mit Datum vergleichen; wie nachstehend.Sieht fast so aus, als würde es funktionieren...
a = parse(right(expr(firstParam),length(expr(firstParam))));
zeige (a); // Rückgabe: Datum;
// Ok, der Doppelpunkt wird also entfernt.
if(Spaltenname(i)==a,b = 1, Spaltenname(i)!=a, b = 0);
zeige (b); // gibt 0 zurück
//////////////////
Der obige Code ist ein Test, um zu sehen, ob ich eine Schleife durchlaufen und testen kann, ob Spaltenname (i) = eine Funktion von firstParam ist. Sieht so aus, als ob es funktionieren sollte, funktioniert aber nicht. Irgendwelche Ideen?
Die bevorzugte Methode wäre, einfach die Spaltennummer direkt zurückzugeben.Wenn Sie mir dabei helfen können, wäre ich Ihnen dankbar.
(Bearbeiten: Nur ein Hinweis, um die letzte Variable in Ihrem Code von „colnumber“ in ein Nicht-JMP-Schlüsselwort zu ändern. „colnumber“ ist reserviert. Sonst funktioniert es einwandfrei.)
Danke für die Lösung! Ein kleiner Tipp für alle da draußen, falls die Datentabelle auf der Leitung nicht aktiv ist
colname = Column( "height" ) << getname;
Dann funktioniert diese Zeile nicht. Wenn Sie jedoch sowohl die Datentabelle als auch den Spaltennamen angeben:
colname = dt:height << getname;
Es funktioniert perfekt! Ich gebe nur ein paar Ratschläge, damit andere nicht so aufgehängt werden wie ich 
Danke, MS. Nur ein Hinweis, um die „colnumber“ in der letzten Zeile Ihres Codes in ein Nicht-JMP-Schlüsselwort zu ändern. Ansonsten funktioniert es gut.
Mein Partner, mit dem ich zusammenarbeite, hat eine ähnliche Lösung vorgeschlagen, indem er die Nummer direkt erhält:
collist = dt << Spaltennamen abrufen ( Zeichenfolge ) ;
firstParam_name = firstParam << Namen bekommen ;
Spaltennummer = enthält ( collist , firstParam_name ) ;
Sie können die Funktion Loc() verwenden, um die Position eines Spaltennamens in einer Liste aller Spaltennamen (in der Reihenfolge der Datentabelle) zu ermitteln.
Beispiel:
dt = Offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
collist = dt << Spaltennamen abrufen ( Zeichenfolge ) ;
Spaltenname = Spalte ( "Höhe" ) << getname ;
Kolnummer = ( Ort ( collist , Spaltenname ))[ 1 ] ;