-
FlexPro
- Auf einen Blick
- Features & Optionen
- Einsatzgebiete
- Alle Vorteile
- Neu in FlexPro 2021
- FlexPro gratis testen
- FlexPro View OEM Freeware
- Kaufberatung
- Login
- Language
-
-
-
- +49 6894 929600
- infoweisang.com
- Google Maps
- Produkte
- News
- Support
- Unternehmen
- Jobs
- Kontakt
- Login
- Language
-
-
-
- +49 6894 929600
- infoweisang.com
- Google Maps
Copy array data in a dataset using Range
Home > Community > Automation and VBA > Copy array data in a dataset using Range
- Dieses Thema hat 4 Antworten sowie 2 Teilnehmer und wurde zuletzt vor vor 15 Jahren, 5 Monaten von
Norbert Bakkers aktualisiert.
-
AutorBeiträge
-
November 11, 2009 um 2:27 am Uhr #12382
Norbert Bakkers
TeilnehmerI’ve been trying to get data from a simple test array in a dataset using the Range command. Using the ‘Transferring Large Data Sets Section by Section’ example as a guide I made the following procedure:
Private Sub CommandButton2_Click() Dim TmpArr(1 To 3) As Single TmpArr(1) = 2 TmpArr(2) = 3 TmpArr(3) = 4 With ActiveDatabase.RootFolder.Add("Signal", fpObjectTypeDataSet) .DataStructure = fpDataStructureDataSeries .DataType(fpDataComponentAll) = fpDataTypeFloat32 .NumberOfRows = 3 .FillColumns "(NumberOfRows(i), FloatingPoint32 0, FloatingPoint32 0)", fpDataComponentAll .Update End With ActiveDatabase.RootFolder.Object("Signal").Range(fpDataComponentAll).Value = TmpArr End Sub
This routing crashes at the Range statement with an ‘Invalid procedure or argument’ error. What am I doing wrong?
Also, if this is all working, I would like to transfer data from a multidimensional array (50 columns) in 50 individual datasets. Is it possible to do this using the Range statement. In other words, how do I select 1 column in the array?
November 11, 2009 um 2:27 am Uhr #8065Norbert Bakkers
TeilnehmerI’ve been trying to get data from a simple test array in a dataset using the Range command. Using the ‘Transferring Large Data Sets Section by Section’ example as a guide I made the following procedure:
Private Sub CommandButton2_Click() Dim TmpArr(1 To 3) As Single TmpArr(1) = 2 TmpArr(2) = 3 TmpArr(3) = 4 With ActiveDatabase.RootFolder.Add("Signal", fpObjectTypeDataSet) .DataStructure = fpDataStructureDataSeries .DataType(fpDataComponentAll) = fpDataTypeFloat32 .NumberOfRows = 3 .FillColumns "(NumberOfRows(i), FloatingPoint32 0, FloatingPoint32 0)", fpDataComponentAll .Update End With ActiveDatabase.RootFolder.Object("Signal").Range(fpDataComponentAll).Value = TmpArr End Sub
This routing crashes at the Range statement with an ‘Invalid procedure or argument’ error. What am I doing wrong?
Also, if this is all working, I would like to transfer data from a multidimensional array (50 columns) in 50 individual datasets. Is it possible to do this using the Range statement. In other words, how do I select 1 column in the array?
November 11, 2009 um 3:18 am Uhr #8587Bernhard Kantz
Teilnehmer1) At the moment the range method only works if all arguments are defined.
Example:Dim TmpArr(1 To 3) As Single TmpArr(1) = 2 TmpArr(2) = 3 TmpArr(3) = 4 With ActiveDatabase.RootFolder.Add("Signal", fpObjectTypeDataSet) .DataStructure = fpDataStructureDataSeries .DataType(fpDataComponentAll) = fpDataTypeFloat32 .NumberOfRows = 3 .Range(fpDataComponentY, 1, 1, .NumberOfColumns, .NumberOfRows).Value = TmpArr .Update End With
2) Create a FPScript formula for each dataset and use the index operator.
Sub MatrixToDataSeries() Dim oMatrix As DataSet Set oMatrix = ThisDatabase.RootFolder.Object("Matrix", fpObjectTypeDataSet) Dim oFml As Formula For i = 1 To oMatrix.NumberOfColumns Set oFml = ThisDatabase.RootFolder.Add("Dataset" & CStr(i), fpObjectTypeFormula) With oFml .Formula = "Matrix[" & i - 1 & "]" .Update .Evaluate End With Next i End Sub
November 11, 2009 um 7:45 pm Uhr #8588Norbert Bakkers
TeilnehmerThank you for the quick reply.
I wasn’t aware that all components of the Range method had to be specified. Flexpro help (Version 7) has these specified as optional, so I left them out. However, the routine is working fine now, thanks for that.Regarding the second question:
I didn’t specify this very clear, but the multidimensional matrix is a VBA matrix, not a Flexpro matrix. I am struggling to select individual columns in the VBA matrix.
I can now copy the whole matrix from VBA to a Flexpro DataMatrix (using Range) and then split them into individual datasets. However, I would prefer to copy the data columns straight from the VBA matrix to the Flexpro datasets.November 11, 2009 um 8:38 pm Uhr #8589Bernhard Kantz
TeilnehmerAlternatively you have to copy the column values into a new variable.
Example:Dim TmpArr(1 To 3, 1 To 2) As Single TmpArr(1, 1) = 1 TmpArr(2, 1) = 2 TmpArr(3, 1) = 3 TmpArr(1, 2) = 4 TmpArr(2, 2) = 5 TmpArr(3, 2) = 6 ReDim TmpArr2(LBound(TmpArr, 2) To UBound(TmpArr, 2)) As Single For i = LBound(TmpArr) To UBound(TmpArr) For j = LBound(TmpArr2) To UBound(TmpArr2) TmpArr2(j) = TmpArr(i, j) Next j ' Create DataSet Next i
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.
Sie sehen gerade einen Platzhalterinhalt von Facebook. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Instagram. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen