JMP – Excel VBA-AutomatisierungHallo, ich verwende die JMP-Automatisierung, um eine bestimmte Zeilennummer basierend auf den ausgewählten Daten mithilfe der Funktion „SelectRowsWhere“ abzurufen, aber ich konnte den Zeilennummernwert nicht abrufen. Gibt es eine andere Möglichkeit, die Zeilennummer abzurufen? siehe unten meinen Code.
Sub getrownum()
Dimmen Sie MyJMP als JMP.Application
Dimmen Sie JMPDoc als JMP.Document
Dimmen Sie DT als JMP.DataTable
Setze MyJMP = CreateObject("JMP.Application")
Setze JMPDoc = MyJMP.OpenDocument("D:\JMP Main Data Table\TestData.jmp")
MyJMP.Visible = True
Setzen Sie DT = JMPDoc.GetDataTable
Setze col1 = JMPDoc.GetDataTable.GetColumn("Date")
'DT.SelectRows 102056, 102057
'um die Zeilennummer 102065 zu erhalten ??
DT.SelectRowsWhere „Date“, rowSelectEquals, rowSelectClearPrevious, „3565986300“
noofrowselected = DT.GetNumberOfRowsByRowState(rowStateSelected)
nn = DT.EnumRowStatesBegin(rowStateSelected)
n1selectedrow = DT.EnumRowStatesGetNextRow()
n2selectedrow = DT.EnumRowStatesGetRowByIndex(1)
getronumff = n1selectedrow
End Sub
- Bala
Betreff: JMP – Excel VBA-AutomatisierungHallo Brian Corcoran,
Vielen Dank für die Antwort. Ja, ich verwende „Data Table .NET“ als Beispiel. Bisher bestand das Problem darin, dass ich den Zeilenindexwert (Zeilennummer) mit „SelectRowsWhere“ nicht abrufen konnte, was am Werttyp liegen könnte. Jetzt habe ich den Code wie folgt geändert und er löst den Zweck.
' **DT.SelectRowsWhere "Date", rowSelectEquals, rowSelectClearPrevious, "3565986300"**
DT.SelectRowsWhere „Date“, rowSelectEquals, rowSelectClearPrevious, „12-31-2016 00:00:00 AM“
noofrowselected = DT.GetNumberOfRowsByRowState(rowStateSelected)
nn = DT.EnumRowStatesBegin(rowStateSelected)
n1selectedrow = DT.EnumRowStatesGetNextRow()
n2selectedrow = DT.EnumRowStatesGetRowByIndex(1)
getronumff = n1selectedrow
Betreff: JMP – Excel VBA-AutomatisierungIch sollte auch erwähnen, dass Sie, wenn Sie einzelne Spaltenwerte wünschen, ein Spaltenobjekt aus dem Datentabellenobjekt abrufen und dann einfach GetCellVal dafür aufrufen sollten.
Zum Beispiel:
Col = DT.GetColumn("Alter")
val = Col.GetCellVal(index)
Betreff: JMP – Excel VBA-AutomatisierungHallo Bala,
Ich würde mir das Beispielprogramm „Data Table .NET“ ansehen, das im Lieferumfang von JMP enthalten ist. Für JMP 13 wäre dies unter C:\Programme\sas\jmp\13\Samples\Automation\Visual Basic Samples. Es gibt mehrere Möglichkeiten, dies zu tun. Eines, worauf Sie hinaus wollten, ist die Enum. Das Beispiel enthält eine Schaltfläche namens Enum Selected, die das tut, was Sie wollen. Der relevante Code ist:
NSelected = DT.EnumRowStatesBegin(JMP.rowStateConstants.rowStateSelected)
Für i = 1 To NSelected
MsgBox(DT.EnumRowStatesGetNextRow, MsgBoxStyle.OkOnly, „Nächste ausgewählte Zeile ist“)
Als nächstes i
Sie können sich auch das Beispiel „Get Selected Vector“ ansehen. Dies verwendet den Aufruf GetRowStateVector, um ein Array aller ausgewählten Zeilen nach Index zurückzugeben.
„Get Selected Data“, ein weiteres Beispiel, verwendet GetRowStateVectorData, um die zugrunde liegenden Datenwerte anstelle der Indizes zurückzugeben.
Ich hoffe das hilft.
Brian Corcoran
JMP-Entwicklung