If this is your first visit to our forums, welcome!
This post contains information about configuring a source control system to be used for Visual DataFlex projects. This post can be used in conjunction with Source Control and Visual DataFlex 101: The Basics and Source Control and Visual DataFlex 102: Multi-Developer Use. Also, see my previous post, The Case for Source Control to learn why you should use it. What Files to Check Into Source Control The rule of thumb for checking in source code is only to check in files ...
Source Control and Visual DataFlex 101: The Basics got you started with source control.; this post will show you how to use source control when multiple developers work on the same project. This post builds on the previous post and assumes you are familiar with the information in it, so if you have not, please read it now. Just as the aforementioned post, the purpose of this post is to allow you to start using source control in a fast and efficient manner. It is not intended to explain ...
In The Case for Source Control, I told you why you should use source control. Now I will show you how to use source control with Visual DataFlex. This post will demonstrate the basics of source control from a single developer perspective. Source Control and Visual DataFlex 102: Multi-Developer Use moves on to using source control when multiple developers work on the same project. The purpose of this post is to allow you to start using source control in a fast and efficient manner. See Configuring Source Control for Visual DataFlex ...
Source Control has been discussed in our forums off and on for years and it appears that some developers are not convinced that using it will benefit them. If you are not currently using source control, you should seriously reconsider doing so. I hope this article clears up most questions you have. Source control is often also referred to as "version control" or "revision control". I prefer the term source control because it does so much more than simply tracking revisions, as I will ...
Our forums are chock full of information and we want to make sure that everyone can make the most of this. Post all relevant information Sometimes the operating system on which you encounter a problem matters, sometimes it does not, sometimes other product versions matter. By providing all the pertinent information from the get-go, it allows people who read your posts to better help you and not have to guess. At minimum, I would suggest that you provide the following ...
Updated 26-Mar-2010 at 12:56 PM by Dennis Piccioni
A well known old trick in DataFlex is the [I]Move 0 to Recnum[/I] trick. It's been used with character mode DataFlex and Visual DataFlex for so long that nobody probably remembers where it came from, and I'm not sure it was ever really a documented or intended feature in the beginning. Nonetheless it became a fully supported technique at some point. Basically, if you ever wanted to create a new record loosely based on data from an existing record, you could use this trick to simplify ...
To wrap up this multi-part series about arrays and structs I'll highlight a few key areas and answer some questions that came up. [URL="http://support.dataaccess.com/forums/blog.php?b=26"]Part I[/URL] starts by showing the basic use of structs and arrays, how they can be used together and as parameter & return types. [URL="http://support.dataaccess.com/forums/blog.php?b=27"]Part II[/URL] discusses how sorting and searching works with native arrays. ...
In [URL="http://support.dataaccess.com/forums/blog.php?b=39"]Part V[/URL] we realized that there's a very common mistake one can make when working with array properties and trying to write code designed after the old Array class interface, which can cause performance issues. When making changes to array properties, and you're concerned about performance, the key thing is to coalesce/combine all changes into one transaction. Remember that a [I]Get[/I] property is always super-fast. There's ...
In [URL="http://support.dataaccess.com/forums/blog.php?b=36"]Part IV[/URL] we discovered that passing very large arrays around via parameters and return values is usually very fast thanks to the built-in copy-on-write optimization. We also discovered that if you modify the array, you incur a copy operation and lose the benefit of the copy-on-write optimization. It may come as no surprise then that the fewer copy operations you perform, the better performance you get. Up ...
Amidst all the Arrays & Structs in-depth multi-part series by Sonny Falk, why not take a look at an example of using an array? The code shown here uses a single-dimensional array as the base for a stack class. A stack is, by definition, a "last in, first out" (LIFO) abstract structure where elements can be added or taken off from only one end, called the "top". A stack can have any abstract data type as an element, but is characterized by two fundamental operations: push and pop. ...
In [URL="http://support.dataaccess.com/forums/blog.php?b=27"]Part II[/URL] of this multi-part series we discussed sorting and searching arrays, and we also mentioned that multi-dimensional arrays aren't really suited for sorting and searching, we'll dig into that a little deeper here and see how a struct type is often a better solution. [B]Multi-dimensional Arrays[/B] Despite what the documentation may seem to suggest, you really cannot sort multi-dimensional arrays. ...
In [URL="http://support.dataaccess.com/forums/blog.php?b=26"]Part I[/URL] we were just getting warmed up and started looking at the basics of arrays and struct types. Now things are about to get more complicated as we dig in deeper. [B]Sorting Arrays[/B] If you have [I]Integer[] myArray[/I] for example, then sorting is very simple and straightforward. You simply do [I]Move (SortArray(myArray)) to myArray[/I], and you're done. The runtime takes care of all the magic ...
Native arrays have been around in Visual DataFlex for years now, it's obvious that native array types are preferred by far over the old Array class, but just what are the differences? For one, with native array types you can create local array variables without resorting to creating an object. That also means you can use array types as parameter types and return types, and the data is carried across method calls far easier than array objects. You also never have to worry about destroying an object, ...
Updated 3-Sep-2009 at 06:48 PM by Sonny Falk
Help, my program hangs on [I]Lock[/I]/[I]Reread[/I]/[I]Begin_Transaction[/I]! That, or some sort of variation is probably the single most revisited topic in the forums over all the years. Probably about 99% of all instances with any problem like this is due to deadlocks with alias files. This is not related to SQL style deadlocks that are resolved by the server, but an inherent complication from alias files/tables that is mostly only seen with the embedded(DataFlex) database. It's ...
Constraints again, who knew there could be so much to say about that. In some [URL="http://support.dataaccess.com/Forums/blog.php?b=17#comments"]comments[/URL] to an earlier post about constraints, the question about ordering of constraints and the impact on performance came up. John Tuohy then also mentioned in his [URL="http://support.dataaccess.com/forums/blog.php?b=25"]follow-up article about constraints and properties[/URL] that "The constraints are split up into multiple ...
A question was asked on the forum about the [URL="http://support.dataaccess.com/Forums/showthread.php?t=40755"]best way for a view and a dialog to communicate[/URL]. [COLOR=black][quote][COLOR=black]What is the best way to pass data back and forth between views and dialogs?[/COLOR] [COLOR=black]Lets say I have a custom dialog (not a lookup) that I want to use to get information from the user. Maybe there is more than one item of data that need to be returned, like ...
Constraints and local variables is a frequent question in the forums, let's see if we can sort this out. The basics is that you set it up once, and then the runtime uses the constraints when finding records thereafter. If you want to change your constraints, you rebuild the whole set of constraints, and then the runtime uses that thereafter. The way constraints are set up is complicated a little with DDs and I won't go into the details, but essentially you augment the [I]OnConstrain[/I] ...
A Visual DataFlex program doesn't have to consist of windows, views and dialogs, you can write command line style programs in VDF too. And the best part is that the VDF Studio (12.x and later) fully supports programs that have no graphical user interface as first class citizens. All the wonderful features, such as CodeSense, the CodeExplorer, the Properties panel, all treat any source code the same, afterall, it's all source code and [I]source code rules[/I]. This may seem obvious unless you've ...