Actionfield with IdeaScript
and again...
Actionfield is a really nice toy to play with...
here is a short example
Sub Run_Actionfield
'declaration
'-----------
Dim sTableActionfieldMaster As String
Dim sTableActionfieldDetail As String
Dim sJoinFieldMasterDetail As String
sTableActionfieldMaster = ""
sTableActionfieldDetail = ""
sJoinFieldMasterDetail = ""
sTableActionfieldMaster = Dir(Client.Workingdirectory + "MasterTableName.IMD")
sTableActionfieldDetail = Dir(Client.Workingdirectory + "DetailTableName.IMD")
'Be careful:
'The JoinKey must exists in both tables !!!!!!!!!!!!!!!
'---------------------------------------
sJoinFieldMasterDetail = "JoinKeyNumeric"
Set db = Client.OpenDatabase(sTableActionfieldMaster)
Set table = db.TableDef
'sometimes it is better to first get as StringField (otherwise idea raise an error)
'and than the JoinKey Field (most times numeric)
'---------------------------------------------
Set field = table.GetField("StringField")
Set field = table.GetField(sJoinFieldMasterDetail)
'here is the point where the magic starts...
'---------------------------------
field.SetActionFieldForExtraction sTableActionfieldDetail, sJoinFieldMasterDetail, "", "", "", "", "", "", ""
db.Close
Set db = Nothing
Set task = Nothing
Set field = Nothing
sTableActionfieldMaster = ""
sTableActionfieldDetail = ""
sJoinFieldMasterDetail = ""
End Sub
that's it....
@brian:
would it be possible to deactivate the trim function when using plain text in your forum?
cheers,
chris
hi
brian...
sorry for the late response, but i was very busy..
that is the reason why i have post it. you can not find anything about it, but it works if you know how... :-)
i have received this information from a source of caseware international.
unfortunately i have not found a way to create a actionfield that can start a macro.. :-(
sure, make a snippet.. i think this website should be exactly for something like this..
it is a nice function, isn't it? :-D
cheers,
chris
Hi Chris,
Hi Chris,
This is a great function. I have created a snippet for it on the site plus I updated one of my scripts with it. I am working on IDEA to get the insider information on all the IDEAScript functionalities. I was suppose to meet with them for lunch this month but V9 is coming out in the next couple of weeks plus they are moving their office so they are supper busy. I am away for several weeks next month for work so I will try to meet with them when I am back in November or December. I really want to know everything that the language can do!!
Hi @ all,
Hi @ all,
we found a way to create actionfields to start a macro. If you remove or rename a database the macro will not work. To fix it we wrote this macro:
Const ISS_Path = "C:\IndExtrActionfield_extr.iss" 'here you have to write your own path
Const ActionFieldType_Extraction As Long = 1
Const ActionFieldType_Macro As Long = 2
Option Explicit
Sub FixIdeaScriptActionFields
Dim otable As Object
Dim tableDef As Object
On Error GoTo Crash
Set otable=Client.CurrentDatabase
Set tableDef=otable.tableDef
On Error GoTo Crash2
Dim tableField As Object
Dim dbName As String
Dim field1 As String
Dim field2 As String
Dim field2_a As String
Dim field2_b As String
Dim field3 As String
Dim field4 As String
Dim field5 As String
Dim i As Long
For i = 1 To tableDef.Count
Set tableField = tableDef.GetFieldAt(i)
If tableField.ActionFieldType = ActionFieldType_Macro Then
tableField.GetActionFieldForIDEAScript field1, _
AF_Extraction, field2,AF_IDEAScript,field3,AF_Extraction,field4,AF_Extraction,field5
field2_a= Left(field2,InStr(1,field2,"~")-1)
field2_b= Right(field2,Len(field2)-InStr(1,field2,"~")+1)
field2 = otable.name & field2_b
If Left(field5,5)="Dummy" And Left(field4,5)="Dummy" Then
tableField.SetActionFieldForIDEAScript ISS_Path, _
AF_Extraction, field2,AF_IDEAScript,field3,AF_Extraction,field4,AF_Extraction,field5
End If
If Left(field5,5)="Dummy" And Left(field4,5)<>"Dummy" Then
tableField.SetActionFieldForIDEAScript ISS_Path, _
AF_Extraction, field2,AF_IDEAScript,field3,AF_IDEAScript,field4,AF_Extraction,field5
End If
If Left(field5,5)<>"Dummy" And Left(field4,5)<>"Dummy" Then
tableField.SetActionFieldForIDEAScript ISS_Path, _
AF_Extraction, field2,AF_IDEAScript,field3,AF_IDEAScript,field4,AF_IDEAScript,field5
End If
End If
Next i
GoTo CleanUp
Crash:
MsgBox "Please choose a database!", 0+16, "Warning:"
GoTo CleanUp
Crash2:
MsgBox "ERROR!", 0+16, " Warning :"
CleanUp:
Set tableField = Nothing
Set tableDef = Nothing
Set otable = Nothing
End Sub
Have fun
Gerold from germany
Thanks for the information.
Thanks for the information. I know they removed the action field function from version 9 but I have never checked if the put it back for version 9.1.1 as I did complain to IDEA about that. If it works in 9.1.1 please let me know and I appreciate you sharing the script.
Wow Chris,Where did you find
Wow Chris,
Where did you find the field.SetActionFieldForExtraction function? I was doing a script and I wanted to do just this and IDEA said that it wasn't possible!!! This is great. I am really curious where you found this as it is not part of the information in the language browser.
Do you mind me putting it in the snippet section of the site with credit to you?
I am trying to figure out how to post code better. Once I figure something out I will let you know.