-
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 von norbert.bakkers@lr.org aktualisiert.
-
AutorBeiträge
-
November 11, 2009 um 2:27 am Uhr #12382norbert.bakkers@lr.orgTeilnehmer
I’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@lr.orgTeilnehmerI’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 KantzTeilnehmer1) 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@lr.orgTeilnehmerThank 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 KantzTeilnehmerAlternatively 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.