Developing Customizations with Dexterity’s 3-Trigger Technique

March 30, 2009


One of the biggest challenges faced by third-party developers is the ability to establish the proper place to set a trigger. Remember, Dexterity developers don’t usually work with source code. However, in the process of establishing the proper point for placing a trigger, we have help in the form of code traces. My friend David Musgrave is now determined to take the mistery (and guessing) by showing you a simple, but extremely useful concept that only he could coin a name for: the 3-Trigger Technique.

David’s articles can be found here:

  • Using Dexterity 3-Trigger Technique – Part 1. Click here. Details the theory behind the implementation of this concept.
  • Using Dexterity 3-Trigger Technique – Part 2. Click here. Implements the solution and provides sample code for the implementation of the technique.

David also wants you to keep in mind the concepts that made the implementation of this technique possible:

  • Three Trigger Technique
  • Cross Dictionary Triggers
  • Capturing and Using References

Just stop over at his site and let him know if you find the information useful.

Until next post!

MG.-
Mariano Gomez, MIS, MCP, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


Developing Customizations with Dexterity’s 3-Trigger Technique

March 30, 2009


One of the biggest challenges faced by third-party developers is the ability to establish the proper place to set a trigger. Remember, Dexterity developers don’t usually work with source code. However, in the process of establishing the proper point for placing a trigger, we have help in the form of code traces. My friend David Musgrave is now determined to take the mistery (and guessing) by showing you a simple, but extremely useful concept that only he could coin a name for: the 3-Trigger Technique.

David’s articles can be found here:

  • Using Dexterity 3-Trigger Technique – Part 1. Click here. Details the theory behind the implementation of this concept.
  • Using Dexterity 3-Trigger Technique – Part 2. Click here. Implements the solution and provides sample code for the implementation of the technique.

David also wants you to keep in mind the concepts that made the implementation of this technique possible:

  • Three Trigger Technique
  • Cross Dictionary Triggers
  • Capturing and Using References

Just stop over at his site and let him know if you find the information useful.

Until next post!

MG.-
Mariano Gomez, MIS, MCP, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


Developing Customizations with Dexterity’s 3-Trigger Technique

March 30, 2009


One of the biggest challenges faced by third-party developers is the ability to establish the proper place to set a trigger. Remember, Dexterity developers don’t usually work with source code. However, in the process of establishing the proper point for placing a trigger, we have help in the form of code traces. My friend David Musgrave is now determined to take the mistery (and guessing) by showing you a simple, but extremely useful concept that only he could coin a name for: the 3-Trigger Technique.

David’s articles can be found here:

  • Using Dexterity 3-Trigger Technique – Part 1. Click here. Details the theory behind the implementation of this concept.
  • Using Dexterity 3-Trigger Technique – Part 2. Click here. Implements the solution and provides sample code for the implementation of the technique.

David also wants you to keep in mind the concepts that made the implementation of this technique possible:

  • Three Trigger Technique
  • Cross Dictionary Triggers
  • Capturing and Using References

Just stop over at his site and let him know if you find the information useful.

Until next post!

MG.-
Mariano Gomez, MIS, MCP, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


Mark Polino on Use Tax and Microsoft Dynamics GP

March 30, 2009


Use tax is one of those things that many companies using Microsoft Dynamics GP immediately resort to third-party solutions without really considering the systems out-of-the-box capabilities. The reasons may be various, among them, a lack of awareness of the GP’s capabilities to begin with.

I had the opportunity to actively participate in the review of a document on Use Tax written by fellow Dynamics GP MVP, Mark Polino. In his document, Mark extensively covers the methods for configuring, tracking, and accounting for use tax in Microsoft Dynamics GP.

Please make sure you download and read Mark’s document as he has dedicated a significant amount of time working through the techniques and methods with GP out of the box functionality.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com


Mark Polino on Use Tax and Microsoft Dynamics GP

March 30, 2009


Use tax is one of those things that many companies using Microsoft Dynamics GP immediately resort to third-party solutions without really considering the systems out-of-the-box capabilities. The reasons may be various, among them, a lack of awareness of the GP’s capabilities to begin with.

I had the opportunity to actively participate in the review of a document on Use Tax written by fellow Dynamics GP MVP, Mark Polino. In his document, Mark extensively covers the methods for configuring, tracking, and accounting for use tax in Microsoft Dynamics GP.

Please make sure you download and read Mark’s document as he has dedicated a significant amount of time working through the techniques and methods with GP out of the box functionality.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com


Mark Polino on Use Tax and Microsoft Dynamics GP

March 30, 2009


Use tax is one of those things that many companies using Microsoft Dynamics GP immediately resort to third-party solutions without really considering the systems out-of-the-box capabilities. The reasons may be various, among them, a lack of awareness of the GP’s capabilities to begin with.

I had the opportunity to actively participate in the review of a document on Use Tax written by fellow Dynamics GP MVP, Mark Polino. In his document, Mark extensively covers the methods for configuring, tracking, and accounting for use tax in Microsoft Dynamics GP.

Please make sure you download and read Mark’s document as he has dedicated a significant amount of time working through the techniques and methods with GP out of the box functionality.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com


How to determine what company was selected from the Company drop-down on the Company Login window

March 29, 2009

Background

This question came up in a recent Dynamics GP newgroup post. A developer was trying to run some Visual Basic for Applications (VBA) code in response to the company selected by the user from the Company drop-down list, but was unsuccessful determining which company was selected by the user.

Challenges

From a customization and development perspective, the Company drop-down list presents the following challenges:

1) Different users may have access to different companies, therefore, the number of companies displayed by the drop-down may vary.

2) The company drop-down list does not store the company ID. It stores a positional value for the company record being displayed.

3) Companies are displayed in the drop-down by Company ID. However, due to challenge number 1, company IDs may present gaps in the sequence based on user access.

Solution

The following VBA code shows how to retrieve the company selected by the user based on the user access to the different company databases. The code executes a SQL statement against the system database when the DDL focus is lost. Since the user is already logged in into the system, it is possible to create an ADO connection with the CreateADOConnection() method.

' Created by Mariano Gomez, MVP' Code is provided as is, with no warraties express or implied.Private Sub Company_AfterLostFocus()    Dim cn As New ADODB.Connection    Dim rst As New ADODB.Recordset    Dim cmd As New ADODB.Command

    Dim objUsr As UserInfo    Dim userID As String

    'Retrieve an ADO connection for the current user    Set cn = UserInfoGet.CreateADOConnection()

    'Set the connection properties    cn.CursorLocation = adUseClient

    'Set the current database, using the IntercompanyID property    cn.DefaultDatabase = "DYNAMICS"

    'Create a command to select all customers    Set objUsr = VbaGlobal.UserInfoGet()    userID = objUsr.userID    With cmd        .ActiveConnection = cn        .CommandType = adCmdText        .CommandText = "SELECT B.CMPNYNAM FROM SY60100 A INNER JOIN SY01500 B ON A.CMPANYID = B.CMPANYID WHERE A.USERID = '" & userID & "' ORDER BY A.CMPANYID"    End With

    Set rst = cmd.Execute

    rst.MoveFirst    i = 1

    While Not rst.EOF        If i = Company.Value Then            MsgBox "You've selected " & rst(0)            rst.MoveLast        End If        i = i + 1        rst.MoveNext    Wend

    'Close the connection    cn.Close

End Sub

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com


How to determine what company was selected from the Company drop-down on the Company Login window

March 29, 2009

Background

This question came up in a recent Dynamics GP newgroup post. A developer was trying to run some Visual Basic for Applications (VBA) code in response to the company selected by the user from the Company drop-down list, but was unsuccessful determining which company was selected by the user.

Challenges

From a customization and development perspective, the Company drop-down list presents the following challenges:

1) Different users may have access to different companies, therefore, the number of companies displayed by the drop-down may vary.

2) The company drop-down list does not store the company ID. It stores a positional value for the company record being displayed.

3) Companies are displayed in the drop-down by Company ID. However, due to challenge number 1, company IDs may present gaps in the sequence based on user access.

Solution

The following VBA code shows how to retrieve the company selected by the user based on the user access to the different company databases. The code executes a SQL statement against the system database when the DDL focus is lost. Since the user is already logged in into the system, it is possible to create an ADO connection with the CreateADOConnection() method.

' Created by Mariano Gomez, MVP' Code is provided as is, with no warraties express or implied.Private Sub Company_AfterLostFocus()    Dim cn As New ADODB.Connection    Dim rst As New ADODB.Recordset    Dim cmd As New ADODB.Command

    Dim objUsr As UserInfo    Dim userID As String

    'Retrieve an ADO connection for the current user    Set cn = UserInfoGet.CreateADOConnection()

    'Set the connection properties    cn.CursorLocation = adUseClient

    'Set the current database, using the IntercompanyID property    cn.DefaultDatabase = "DYNAMICS"

    'Create a command to select all customers    Set objUsr = VbaGlobal.UserInfoGet()    userID = objUsr.userID    With cmd        .ActiveConnection = cn        .CommandType = adCmdText        .CommandText = "SELECT B.CMPNYNAM FROM SY60100 A INNER JOIN SY01500 B ON A.CMPANYID = B.CMPANYID WHERE A.USERID = '" & userID & "' ORDER BY A.CMPANYID"    End With

    Set rst = cmd.Execute

    rst.MoveFirst    i = 1

    While Not rst.EOF        If i = Company.Value Then            MsgBox "You've selected " & rst(0)            rst.MoveLast        End If        i = i + 1        rst.MoveNext    Wend

    'Close the connection    cn.Close

End Sub

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com


How to determine what company was selected from the Company drop-down on the Company Login window

March 29, 2009

Background

This question came up in a recent Dynamics GP newgroup post. A developer was trying to run some Visual Basic for Applications (VBA) code in response to the company selected by the user from the Company drop-down list, but was unsuccessful determining which company was selected by the user.

Challenges

From a customization and development perspective, the Company drop-down list presents the following challenges:

1) Different users may have access to different companies, therefore, the number of companies displayed by the drop-down may vary.

2) The company drop-down list does not store the company ID. It stores a positional value for the company record being displayed.

3) Companies are displayed in the drop-down by Company ID. However, due to challenge number 1, company IDs may present gaps in the sequence based on user access.

Solution

The following VBA code shows how to retrieve the company selected by the user based on the user access to the different company databases. The code executes a SQL statement against the system database when the DDL focus is lost. Since the user is already logged in into the system, it is possible to create an ADO connection with the CreateADOConnection() method.

' Created by Mariano Gomez, MVP' Code is provided as is, with no warraties express or implied.Private Sub Company_AfterLostFocus()    Dim cn As New ADODB.Connection    Dim rst As New ADODB.Recordset    Dim cmd As New ADODB.Command

    Dim objUsr As UserInfo    Dim userID As String

    'Retrieve an ADO connection for the current user    Set cn = UserInfoGet.CreateADOConnection()

    'Set the connection properties    cn.CursorLocation = adUseClient

    'Set the current database, using the IntercompanyID property    cn.DefaultDatabase = "DYNAMICS"

    'Create a command to select all customers    Set objUsr = VbaGlobal.UserInfoGet()    userID = objUsr.userID    With cmd        .ActiveConnection = cn        .CommandType = adCmdText        .CommandText = "SELECT B.CMPNYNAM FROM SY60100 A INNER JOIN SY01500 B ON A.CMPANYID = B.CMPANYID WHERE A.USERID = '" & userID & "' ORDER BY A.CMPANYID"    End With

    Set rst = cmd.Execute

    rst.MoveFirst    i = 1

    While Not rst.EOF        If i = Company.Value Then            MsgBox "You've selected " & rst(0)            rst.MoveLast        End If        i = i + 1        rst.MoveNext    Wend

    'Close the connection    cn.Close

End Sub

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com


Life from the inside of the Fargo flooding – Part II

March 29, 2009

For those of you who have been asking about the flooding in Fargo, North Dakota, here is an update directly from my friend Tom Irsfeld. Amids the situation, Tom has taken time out to take these pictures and deliver a complete update from his vantage point.

Thanks to all those who have asked about the flood. My neighborhood is in great shape, except for the yards that were trashed by heavy equipment.

For those that have been following the Fargo flood, here is a little update. On Saturday, the river appears to have crested at 40.82 feet (previous record was 40.1 in 1897) & is now at 40.15 & trending downward. It was originally expected to get to 42 feet, so it is great that it didn’t go that high (although all city dikes were built to 43 feet). Barring something unforeseen, such as a major rainstorm or rapid melting, neither of which is predicted, we should be in the clear, unless one of the dikes gets a hole in it.

Now all we have to do is watch the pumps from behind the dikes & watch for any major holes. Once the river gets down to about 39 feet (expected by Thursday or Friday), that will be below the dikes in my neighborhood & so we should be in the clear. In my neighborhood, the Rose Creek Coulee, which flows into the Red River in about 1 mile, is mostly now just backup water, so there isn’t any current that can eat away at the ground beneath the dikes. Last night in another part of town, a dike was undermined by the current, sprung a leak & caused a school to be flooded. Fortunately the city has a backup clay dike on a street near the school that protected the rest of the city.

I don’t have a dike in my backyard (my next-door neighbor does), but those of us in the neighborhood all have shifts monitoring the pumps behind the houses that do. This is pretty boring work, a cross between ice fishing & sentry duty. The most excitement I’ve had in one of my shifts is when someone accidentally unplugged one of the pumps.

Flood2.jpg has the layout of my neighborhood.


The treeline on the right-hand side is the Rose Creek Coulee, which in the summer you can jump across. The dikes were made up of a combination of 3 different styles of dikes.

1) Hesco – these are dikes used by the military & you can see them in the left-side of the picture. They are made of wire frame with a cloth covering, about 4 feet high, 3 feet wide & are filled with sand. Each section weighs 5300 pounds.

2) Standard sandbag dikes – no explanation needed

3) Clay dikes

The city today is closing off the contingency dike, which will protect the city in case my neighborhood’s dikes fail. It is good for us in case the city’s other dike’s fail, as we would then be protected. I think we have enough frozen pizzas & beer to last us. Yesterday our phones went out, as Qwest service was interrupted (either a contractor building a dike cut the line or their relay station was flooded).

Here’s a couple of pictures I took from my yard & my next-door neighbor’s yard. Nothing dramatic like a rooftop rescue.

IMG_1594 – position A. On the left, you can see the Hesco dike, on the right, you can see the sandbags. You can also see the pump hose which is used to pump the water from the seepage buckets back into the river.

IMG_1588 – position B. On Friday, volunteers filled sandbags which were used to create a backup dike in one yard Friday, after one of the Hesco’s started to tilt towards the water. It took 15,000 sandbags to create a backup dike behind the tippage.

IMG_1600 – this is my garage, where they have been storing sandbags overnight, to keep them warm (frozen sandbags don’t stack very well). Since our diking is done, these will be used in case of a hole in the dike. Almost every house in our neighborhood has their garage full of sandbags. Our other cars were parked on the West side of the contingency dike so that if we need to evacuate, we have a vehicle on the other side.

IMG_1596 – position C. This is the clay dike in back of my house.

IMG_1592 – in the event the dike breaks, the water would be above the fenceline on the left & we’d take the canoe to the contingency dike.

The local Microsoft office is closed next Monday & Tuesday (there is only one road open to get to it) & possibly longer. Most employers have been urged to close down to keep people off the roads. Most schools are cancelled for next week

Each morning, we watch the City meeting on TV where the mayor, governor & other city people give their updates. Congressman Earl Pomeroy has been sporting his flannel shirt, which usually only comes out during election years. From one camera angle, I actually saw the back of Senator Byron Dorgan’s head, indeed he is bald (no crime in my eyes), his comb-over rivals Donald Trump’s. For those of you Non-North Dakotans, Byron has been a congressman or senator for about 30 years & I have never before seen the back of his head

Since the water appears to be receding, I probably won’t send out further updates unless things deteriorate.

Tom

So far, nature has been on the side of North Dakotans and we can only expect the outcome to be positive under the current circumstances. We wish everyone a safe return to normalcy.

Related Articles

Life from the inside of the Fargo flooding – Part I. Click here.

Until next post!

MG.-
Mariano Gomez, MIS
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/