Monday, November 26, 2007

A Little Thanksgiving Housekeeping for eDeveloper v9.4

I know I usually write about the latest version of eDeveloper: eDeveloper V10, but last week's service pack release gives me a chance to mention the latest service pack release for our older development tool version: eDeveloper v9.4.

On Thanksgiving Day (US), November 22, 2007 Magic Software Enterprises released SP8. As always, you can install eDeveloper 9.4 Service Pack 8 using the installation wizard’s Upgrade option, the wizard automatically replaces the files that were modified since your previously-installed version. By the way, if you haven't looked at the samples for v9.4, be sure to look at the samples at:

Hopefully, that gives you something to be thankful for. The Service Pack only includes fixed problems, commonly known as bug fixes, which are shown here in alphabeical order, by name, and with a reference to the relevant QCR:

1. ActiveX – CDO Library (QCR # 249783) eDeveloper failed to show the methods or properties of the Microsoft CDO type library.
2. ActiveX – MgItemSequential (QCR # 755479) The first item in a collection was not retrieved when using the MgItemSequential method of a COM object.
3. ActiveX – Return Value (QCR # 529387) The values were not properly returned when using an ActiveX control defined as "FileSystemObject" of type library "Microsoft Scripting Runtime (Ver 1.0)".
4. Application List – INIPut() (QCR # 916180) A change to the application name via the Settings menu was not saved when an INIPut() function was previously used to add entries to the [MAGIC_SYSTEMS] section of the magic.ini file.
5. AS400 – Get Definition (QCR # 931792) Performing Get Definition on a table with indexes from a database whose name was defined in small letters added the library name as a prefix to the table and indexes’ names.
6. Authorization – LDAP (QCR # 750937) Specifying the wrong password when using LDAP closed the login screen and showed the previous username as the connected user.
7. Authorization – LDAP (QCR # 751594) eDeveloper failed to use Active Directory user accounts that were defined with a comma character in their name.
8. Broker – Monitor (QCR # 769359) The Broker monitor showed a threads peak value greater than the threads maximum value.
9. Browser Client – .NET CLR 2 (QCR # 227844) Executing a Browser Client program on a machine without CLR 1.1 installed did not return the proper error message. *
10. Browser Client – Check Box Control (QCR # 914074) A Check Box control did not show the updated value in Browser Client display when a Verify statement was executed immediately after changing the value.
11. Browser Client – Context Unload (QCR # 976397) An error appeared in the mgerror log file after closing a page with a javascript function when the Context Unload Timeout environment setting was set to zero.
12. Browser Client – Contexts (QCR # 985850) A running context could close another context from another IE session when both contexts ran the same program.
13. Browser Client – Copy and Paste (QCR # 777060) The Copy and Paste options did not work in a Browser Client program that was in Query mode.
14. Browser Client – Cross-site Scripting (QCR # 988306) The eDeveloper requester (CGI /ISPI) had Cross-site scripting (XSS) flaws when using DefHtml Parameter settings in the Mgreq.ini file and writing direct scripts in front of the Arguments parameter in the URL.
15. Browser Client – Field Range (QCR # 287294) Value range on a Date field failed to work in Browser Client when the range contained spaces.
16. Browser Client – Incremental Update (QCR # 900738) Incremental updates did not work correctly in a Browser Client task when a Link Write was used.
17. Browser Client – Screen Refresh (QCR # 917684) The screen was not refreshed correctly when browsing memory tables in certain scenarios.
18. Browser Client – Signed MSI (QCR # 101633) The MSI file that installs the CAB files required for Browser Client execution was not signed, thus it could not be executed on sites using a strict security policy. *
19. Browser Client – Transaction Cache (QCR # 785229) The eDeveloper engine crashed in some specific scenarios depending on the transaction cache when running a Browser Client program.
20. Builders – Components (QCR # 939733) An error was returned when adding new tables to an existing component that already had some tables defined.
21. Builders – WSDL (QCR # 934669) The WSDL builder returned an error when tying to get the schemas from an XSD file with a URL path.
22. Builders – XML (QCR # 987568) The data was not read from the XML file through the "Read XML" program created in the XML component.
23. Cache – Changing Modes (QCR # 966543) eDeveloper switched to Create mode upon changing the mode to Modify on a screen mode program defined with no main table and the Cache Strategy set to "Position".
24. Cache Strategy – Memory Gateway (QCR # 254280) Scrolling using the PgDn and PgUp keys did not work properly when browsing a table whose Cache strategy was set to None and performing Sort by clicking on the table column's title.
25. Cache Strategy – Memory Gateway (QCR # 769691) Scrolling in a backward direction did not refresh the data properly when browsing a memory table whose Cache strategy was set to None and the column sort was used.
26. Call Remote – Performance (QCR # 248012) A performance problem occurred when using the "call remote" mechanism with a large user file. *
27. Checker – ExpCalc() (QCR # 771447) An error was shown when executing the Checker on an expression that had a nested ExpCalc function in it.
28. Checker – Missing Variable (QCR # 681399) The Checker failed to report on a missing variable that was defined in an expression of the "DB SQL Where" property.
29. Components – CallProg() (QCR # 929773) The CallProg() function executed in a component called a program from the host application instead of the program from the component application.
30. Components – Load Immediate (QCR # 915478) eDeveloper crashed when a model in the host application had a select program from a component that was defined with Load Immediate=No.
31. Components – Orphan Tasks (QCR # 991046) eDeveloper crashed upon executing a component program from a host application with orphan tasks during some scenarios.
32. Confirm Update – Nested Tasks (QCR # 929259) Updates made in a subtask were saved even when Confirm update was set to No by the end-user when exiting the subtask and immediately exiting the parent task.
33. Controls – Border Style (QCR # 974253) It was not possible to change the Border style property when selecting multiple controls and changing their style to 2D.
34. Controls – Combo Box (QCR # 937702) The wrong value was displayed in a combo box after creating a record when an expression was attached to both the Item List and Display List properties of the combo box.
35. Controls – Image (QCR # 740281) The tooltip was not displayed for Image controls when the screen resolution was changed to 1280*768.
36. Controls – Image Button (QCR # 985613) The 3D effect of an Image button in SP6c and above was different than previous versions.
37. Controls – Line (QCR # 756240) The cursor was not moved to an Edit control when there was a Line control under the Edit control and the area of the Line control was clicked on.
38. Controls – Slider (QCR # 602655) The Mouse Over/Out event did not work on Slider controls.
39. Controls – Slider (QCR # 656280) The Control Hit event handler for Slider controls was executed twice.
40. Controls – Tab (QCR # 992568) The screen flickered upon scrolling through the records when the form had a Tab control set with expressions on the tab’s Display list and Items list properties.
41. Controls – Table (QCR # 743617) It was not possible to drag and drop the table field's data when the table was wider than the MDI and the caret was positioned on the right side of the table.
42. Controls – Table (QCR # 777255) Records in a table were not correctly displayed when opening a table in create mode, inserting some records and then adding a new record in the middle of them.
43. DB2 – Decimal Value (QCR # 293057) eDeveloper did not display the decimal part of number values on a DB2 9.1 database.
44. DB2 – Expand Form (QCR # 781109) eDeveloper rounded the data when reading data from a DB2 table having a field with data type = DOUBLE.
45. DB2 – Order By Clause (QCR # 777372) The position key segments were also included in the Order By clause created for a linked table locating a non_unique index when using the DB2 and ODBC gateways.
46. Debugger – Flow Monitor (QCR # 728280) The CPU usage was sometimes increased to 100% when reaching a breakpoint.
47. Edit Control – Multi-Line (QCR # 774769) It was not possible to park on a multi-line Edit control by pressing the mouse when a 'click' event existed in the program and the Edit control had an expression on the Enable property.
48. Environment – INIPut() (QCR # 991880) Setting the value of RangePopTime and TempPopTime using the INIPut() function did not work when using it with Force write = False.
49. Events – Control Level (QCR # 915413) The control’s event handlers were not executed when modifying the field’s value, pressing Cancel, and selecting ‘No’ in the confirmation box.
50. Events – Page Header (QCR # 779133) The Page Header event was executed only once even when more than one output forms were outputted.
51. Execution – DEP (QCR # 240904) eDeveloper terminated abnormally during startup when DEP (Data Execution Prevention) was enabled for all programs. *
52. Exit Operation – Background Mode (QCR # 281614) An 'Exit' Operation command executing a batch file in background mode returned an error code (-1) as the return value.
53. Export – Document (QCR # 767712) The contents of the eDeveloper SQL Range was not written to the Export Document file when both the SQL Range and DB SQL Where Expressions were defined in the program.
54. Expression Editor – Repeat Shortcut (QCR # 288555) The repeat shortcut (@) was limited to a 3-digit expression number.
55. Flow Monitor – Variable Window (QCR # 288396) Variables that started and ended with the % (percentage) character were not displayed in the value column of the Variable window in the Flow Monitor.
56. Force Record Suffix – Add Record (QCR # 286131) A new record that was created in an online task defined with Cycle record main = No and Force record suffix = Yes, was not saved when skipping to the next record by pressing tab from the last field.
57. Form Editor – ActiveX (QCR # 764514) eDeveloper crashed when exiting a subtask with an ActiveX control on its form.
58. Forms – Tooltip (QCR # 768929) The tooltip was not displayed if it was defined as an expression that uses a variable from a Link operation when the main display form was other than the default form.
59. Functions – CtrlGoto() (QCR # 764538) eDeveloper did not respond after scrolling through the table using the scroll wheel of the mouse when CtrlGoto() was used in the Record Prefix.
60. Functions – CtxSize() (QCR # 778885) The CtxSize() function refreshed the last used context information when it was used.
61. Functions – CurRow() (QCR # 741409) The CurRow()function returned wrong results if the Resident Task property of the task was set to "Yes" and when the task range was changed so that there were no records in the range.
62. Functions – IOSize() (QCR # 997160) The IOSize()function returned negative values for files larger than 2 GB.
63. Functions – KbGet() (QCR # 772271) The KbGet() function returned a wrong value when used in the Record Main compatible logic unit.
64. Functions – VarSet() (QCR # 300356) eDeveloper crashed when a numeric expression was set to an alpha variable using the VarSet() function.
65. HTML Form – Hyperlink (QCR # 967502) An HTML form defined with Input=Yes and set with a Hyperlink that referred to an eDeveloper program, did not dynamically add the three hidden arguments, Application, Prgname, and Arguments, to the form tags that are generated at runtime when the called child task/program also output an HTML form.
66. Image – Resolution (QCR # 910920) An image was not displayed properly in some resolutions.
67. Import – Special Characters (QCR # 939169) eDeveloper could not import an export of a program that contained special characters in some of its properties.
68. Interface Builder – Web Services (QCR # 334866) When creating a Web Service using the Web Service Interface builder and clicking the Verify Structure button, an error was sometimes received.
69. LDAP – Binding (QCR # 998962) Using OU did not work when entered in the Connection String property.
70. Memo – Tab Display (QCR # 774357) Memo fields that contained the Tab character were not displayed properly when leaving the field.
71. Memory Leak – Link Write (QCR # 911077) A memory leak occurred after executing a batch program having a Link Write operation in background mode when the MaxConcurrentRequests were reached.
72. Merge – Performance (QCR # 775792) Performing a merge operation on a template that had rows and columns took a very long time when there were a lot of rows to merge.
73. MSSQL – Browser Client (QCR # 303363) Link Query defined in the main program was executed after every record execution in any task even when there was a fixed value in the Link Locate expression.
74. MSSQL – Error Handlers (QCR # 728381) eDeveloper crashed while browsing records on an MSSQL database when some rows were deleted from another session.
75. MSSQL – Hint (QCR # 910662) An error was obtained when ‘FORCE_INDEX’ was used as a hint on SQL Server 2005.
76. MSSQL – Locate (QCR # 757582) eDeveloper did not perform the incremental locate properly when typing fast.
77. MSSQL – Numeric Field (QCR # 248887) A numeric field stored as a signed integer with SQL type set to bit displayed as 1 in eDeveloper when the numeric field's picture was larger than 1 and included the N character. *
78. MSSQL – Sort (QCR # 998843) eDeveloper did not send a sort command to the RDBMS when the sort was done by the user on columns from the Main table and Link Joined table.
79. MSSQL – Stored Procedure (QCR # 784462) eDeveloper crashed when running a program that calls a generated stored procedure where a Locate is performed on a field that was moved.
80. MSSQL – View Refresh (QCR # 970880) eDeveloper crashed upon closing a DSQL task after performing a view refresh operation when the result database was MSSQL.
81. Multilingual – Trim (QCR # 912733) The MlsTrans() function returned a trimmed string when no matching translation string was found.
82. OLE – Instantiation (QCR # 782361) An OLE object was not instantiated correctly when it was part of a collection.
83. Operations – Block (QCR # 778724) The 'Block Else' condition was executed even though the 'Block If ' condition evaluated to True.
84. Oracle – Charset (QCR # 756467) The correct row was not retrieved when ranging a value using Picture on an Oracle table and using "NLS_CHARACTERSET=WE8MSWIN1252".
85. Pervasive – Deferred Transactions (QCR # 982443) eDeveloper returned an error when deleting records from a Deferred Transaction program that had a Link Inner Join operation.
86. Pervasive – Duplicate Index (QCR # 774018) eDeveloper did not show the "Duplicate Index" error message when creating records using "Link Create" in a batch program that did not use a Pervasive database transaction.
87. Pervasive – New Table (QCR # 15457) A Unique Identifier error appeared when creating a new table with a float (4) field on Pervasive 9.5 database.
88. Pervasive – ODBC (QCR # 926120) An error appeared when using the Pervasive ODBC Client Interface and executing a program with a certain index definition.
89. Pervasive – SQL Range (QCR # 913959) eDeveloper crashed when performing view refresh on a program with a Pervasive table that was once an SQL table and had an SQL range defined.
90. Print Preview – Expand Form (QCR # 780319) Table data was not displayed correctly in the Print Preview when the Expand Form option was used.
91. Print Preview – Images (QCR # 993173) The Image control on print preview had a different size and display colors compared with image controls in versions prior to SP5.
92. Printers – Number of Copies (QCR # 979100) The Copies property value defined in the default printer settings of the operating system was not shown in eDeveloper.
93. Printing – Multi- line Edit (QCR # 989830) The printed header lines of the second page and onwards were corrupted when printing a report that prints multi-line edit fields.
94. Printing – Tasks (QCR # 777828) eDeveloper sometimes crashed while printing the forms from two tasks into the same printer when headers and footers were defined.
95. Range – Cache (QCR # 994246) Records were not displayed properly when updating them from a batch task and displaying them according to range when not all the variables from the table were selected.
96. Record Suffix – Mouse Click (QCR # 770744) The Record Suffix was not executed when clicking on an Edit control in a child task in certain scenarios.
97. Records Display – No Index (QCR # 759564) Records were not displayed properly when selecting a table that does not have an index and selecting only some of the variables in the task.
98. Requester – HTTPVars (QCR # 996861) Error (-103) occurred when the HTTPVars parameter string in the Mgreq.ini file was too long.
99. Rights – Components (QCR # 765845) eDeveloper sometimes showed controls on a form defined in a component even if the user that was logged on did not have rights for them.
100. SQL – Range (QCR # 755614) An error was received when ranging on a virtual variable that was defined with Null allowed=Yes in certain scenarios.
101. Table – HitZOrder() (QCR # 996362) The HitZOrder() function returned a unique value for the controls in each row in a table instead of returning the same value for all the controls in the same column.
102. Table – Logical Names (QCR # 996418) A gateway error was returned when altering a table that was defined with a logical name in its name and had a foreign key.
103. Table – Width Recompute (QCR # 913114) The table width was recomputed every record after a window resize was done when the Table control had a placement and expression on its Width property.
104. Team Development – ACS (QCR # 292564) eDeveloper crashed on checking out a program when using ACS file for the same database as the MCF.
105. Team Development – Components (QCR # 932448) eDeveloper crashed when activating Team development for components in a specific scenario.
106. Text-based Forms – Horizontal Alignment (QCR # 931771) The Horizontal Alignment property of a variable pasted on a Text-based form could not be changed if the Text control of the variable was pasted near any of the variables on the form.
107. Tools – Export (QCR # 923487) eDeveloper crashed when trying to export an application that has a component using the Tools infrastructure in Background mode.
108. Tree Control – Drop (QCR # 941906) The Drop event did not work properly when performed on a Tree control.
109. Version Control – Folders (QCR # 765202) eDeveloper crashed after performing the version control sync operation on an application with folders.
110. Web Service – Call Operation (QCR # 773587) eDeveloper hanged when loading some WSDL files into a Call Web Service operation.
111. WSDL – Call Web Service (QCR # 996400) Some methods in a WSDL file could not be loaded using the Call Web Service operation.

Please feel free to contact us at anytime with suggestions for improvements to eDeveloper.

Happy Thanksgiving!

Friday, October 05, 2007

Unicode Makes Multiple Languages Easier In Your eDeveloper V10 Applications

One of the important enhancements to eDeveloper V10 is the addition of full support for Unicode. This FAQ is designed to answer some of the high-level questions you may have regarding Unicode and its use in eDeveloper V10.

Q. What is Unicode?

A. The official definition can be found on the Unicode Consortium website in their glossary:

“Unicode. The universal character encoding, maintained by the Unicode Consortium ( This encoding standard provides the basis for processing, storage and interchange of text data in any language in all modern software and information technology protocols.”

Q. What are the benefits of Unicode?

A. Once again we turn to the Unicode Consortium for an answer:

“Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language. The Unicode Standard has been adopted by such industry leaders as Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys and many others. Unicode is required by modern standards such as XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, etc., and is the official way to implement ISO/IEC 10646. It is supported in many operating systems, all modern browsers, and many other products. The emergence of the Unicode Standard, and the availability of tools supporting it, are among the most significant recent global software technology trends.”

“Incorporating Unicode into client-server or multi-tiered applications and websites offers significant cost savings over the use of legacy character sets. Unicode enables a single software product or a single website to be targeted across multiple platforms, languages and countries without re-engineering. It allows data to be transported through many different systems without corruption.”

Q. How extensively does eDeveloper V10 support Unicode?

A. eDeveloper V10 now includes across-the-board Unicode support within the product. Support for Unicode is provided in addition to existing support for both the ANSI and OEM standards.

Q. What specific Unicode capabilities are included in eDeveloper V10?

A. Unicode support in eDeveloper V10 includes the ability to read from and write to Unicode database fields; capability to input and output Unicode data to various Input and Output files; options to create program logic for Unicode data; techniques to perform read and write operations on Unicode files; capacity to send and receive Unicode data to and from external systems; and power to use Unicode definitions in expressions, functions, and form properties.

Q. What capabilities are there for Unicode Conversion?

A. eDeveloper V10’s implicit casting mechanism lets you select the code pages you
want to use for conversion to and from Unicode. If you don’t select the code
pages, eDeveloper V10 will use its own default code page. For purposes of explicit casting, there are two new functions:
• UnicodeFromANSI
• UnicodeToANSI

Q. Is it true that Unicode functions have been added to eDeveloper V10?

A. Yes, to complement the Unicode support, two new Unicode-related functions have
been added.
• UnicodeCHR - Converts a numeric value to a corresponding Unicode
• UnicodeVal - Converts a Unicode character to a corresponding numeric

Q. Are there utilities for Unicode Conversion?

A. Absolutely. eDeveloper V10 includes utilities that help you convert data from Unicode to ANSI and from ANSI to Unicode. The utilities let you define the input and output files as well as the code page to use, if you don’t want to use the default code page.

Q. Are there resources on the web to help us learn more about Unicode?

A. Of course. Start, of course with at

While I am sure you can google on your own, here are a couple more interesting pages to get you started on a nice long surfing expedition:

Alan Wood’s Page
This is a good resource page with links to many other useful sites.

W3C Page
And of course, W3C could not possibly be silent on a subject as important as Unicode, here is the XML/Unicode page:

Q. What character sets are supported by Unicode?

A. “More than you will ever need” is probably the shortest answer.

Specifically, Unicode 2.0 supports scripts for Arabic, Armenian, Bengali, Bopomofo, Cyrillic, Devanagari (the script employed by Hindi and Sanskrit), Georgian, Greek, Gujarati, Gurmukhi, Han, Hangul, Hebrew, Hiragana, Kannada, Katakana, Latin (including the international phonetic alphabet IPA), Lao, Malayalam, Oriya, Tamil, Telugu, Thai, and Tibetan scripts. These scripts are all written horizontally. Hebrew and Arabic are of course written right to left. Indic scripts are written variously and in ways that are sometimes described as a circular motion. Arabic and the Indic scripts must use intelligent ligature selection.

Unicode 3.0 expands some existing scripts and adds Braille, Canadian Aboriginal, Cherokee, Ethiopic, Khmer, Mongolian, Myanmar, Ogham, Runic, Sinhala, Syriac, Thaana, and Yi. Mongolian is the first script that can only be written in vertical rows.

Besides the characters for writing the world's major languages, there is a whole set of typographic, technical, graphical, mathematical, astrological and other scientific symbols and geometrical shapes in Unicode.

Q. I heard Unicode has limited support for Chinese, Japanese and Korean. Is that true?

A. Unicode supports Han scripts such as those used in Chinese, Japanese and Korean (often called CJK). Unfortunately some urban legends or myths have developed about the support of CJK characters in Unicode. According to, “The Unicode Standard supports all of the CJK characters from JIS X 0208, JIS X 0212, JIS X 0221, or JIS X 0213, for example, and many more. This is true no matter which encoding form of Unicode is used: UTF-8, UTF-16, or UTF-32.”

In fact, Unicode supports more than 70,000 CJK characters. More will undoubtedly be added, but you can be assured that the support is comprehensive already and goes above and beyond what is expected. reports that “the International Standard ISO/IEC 10646 and the Unicode Standard are completely synchronized in repertoire and content. And that means that Unicode has the same repertoire as GB 18030, since that also is synchronized with ISO 10646 — although with a different ordering and byte format.” Rather a mouthful for those that do not follow these things in detail. And in the final analysis, that is the beauty of eDeveloper 10 – as with all previous versions of Magic, you do not need to get bogged down in the underlying technical details. With eDeveloper 10, just sit back, relax and enjoy full Unicode support.

Compliance Requirements Strain IT Resources

For those of you keeping track of Magic Software's entry into the podcast age, here is a link to the interview on the subject of compliance with Carol Woodbury, Founder and President of Skyview Partners.

Learn more about the webinar here on Magic's website.

For information on ERP Integration, please look at the Integrate My JDE blog. You will find information on ERP and accounting interfaces and integration with CRM systems, enterprise portals, eCommerce, social media, and other business applications and software.

Thursday, May 10, 2007

Thanks for the Memories: MIUG 2007

What a great MIUG 2007! Thanks to everyone who participated in and attended this year's MIUG 2007. I hope that you will agree that this event provided an excellent foundation for members of the Magic community looking to advance and grow their businesses using the greatest development tool on the market today.

The key word at this year's event seems to have been "transparency." Thank you WIRED magazine for placing this concept top of mind for everyone. You probably noticed a few things that were different at this year's conference:

1. We started by showing our imminent built-in support for PDF. I am thinking that since it took us 6+ years of MIUG to release this feature, we should start each conference for the next six years by doing a PDF demo. :) The reason this is an evidence of transparency is that it showed that we listened to the input from last year, admitted our mistakes, and moved on.

2. The demonstration of he Rich Internet Client is also an evidence of transparency, in that we are showing that the input received during the CAPP migration process of last year has also influenced heavily on our development decisions.

3. Two years ago at MIUG, you may remember that we discussed the need for lower cost licensing models. It took us a little over a year to implement our solution, but we have also responded in a big way with the Discovery/Xpress/Enterprise Edition structure to answer the needs for seeding, affordability and power, respectively.

4. The focus roup sessions were invaluable. I am sure that you will see great things coming from Avishai Shafir as the lead person directing our Magic community programs and marketing.

5. Once again, we were delighted to be able to provide knowledgeable presenters from our R&D, technical support and professional services teams. We also love all of the presentations by each of you in the user community. The depth of your knowledge is invaluable.

6. Having our chairman, David Assia, present with us at MIUG was the icing on the cake this year. David's passion and vision are obvious and I hope that you can see that the future of eDeveloper is bright.

I want to take this opportunity to once again thank Dale and Heidi Schuppenauer and Cabrita Software for organizing the conference as well as SUmmer Remmert for her assistance.

See you all in 2008!

Saturday, March 03, 2007

eDeveloper V10 Advanced Features Webinar

eDeveloper V10 -- Advanced Features

Topic: eDeveloper V10 -- Advanced Features
Date: Wednesday, March 21, 2007
Time: 11:00 am, Pacific Daylight Time (GMT -07:00, San Francisco)

Join Roberto Ramirez, a Senior Consultant in the Professional Services Department at Magic Software Enterprises, Inc. in Laguna Hills, California, who will present three important advanced features in eDeveloper V10:

  • Report Generator. End users seek applications that allow them to build their own reports on the fly. The powerful new runtime report generator in eDeveloper V10 Enterprise Edition is better than ever and will be explored from both the developers' and the end users' perspective.

  • Team Development. It's hard enough for a solo programmer to keep track of revisions and versions of their software. When you add one or more additional developers, then team development solutions are vital. With eDeveloper V10 Enterprise Edition you can use the source code control software of your choice, including the bundled CVS software.

  • Graphical User Interface Enhancements. Your users will absolutely love the enhanced usability and improved aesthetics of the new applications you create with eDeveloper V10. Learn what you can do now to create immediate raves from your customers and end users.

    Registration. To attend this meeting, you must first register for it. Please click here to see more information about and register for this meeting.

    Once you have registered for the meeting, you will receive an email message confirming your registration. This message will provide the information that you need to join the meeting.
  • Monday, February 26, 2007

    How do you define software quality?

    ISO 9126 provides a standardized way to evaluate software quality by defining six sets of attributes by which we can evaluate software. These attribute sets are functionality, reliability, usability, efficiency, maintainability, and portability. What do they mean by these standards?

    Functionality refers to the existence of a set of functions and their associated properties. Functionality gets to the fundamental ability of a software application to perform the required tasks necessary to satisfy user and organizational needs.

    Reliability refers to the stable performance of these functions under a variety of conditions across time.

    Usability as approached by ISO 9126 deals with the effort needed for use, and user assessment and acceptance.

    Efficiency is all about performance issues and the resources required to perform the software functions under various conditions over time.

    Functionality, reliability, usability and efficiency are all characteristics observable by users or operators. The other two criteria for measuring software quality that are contained in ISO 9126 relate to the developers ability to interact with a given software application. It isn't only an assessment of the tools used, but also how well the tools were used to accomplish the need for these next criteria:

    Maintainability looks at the effort required to make specific modifications. We all know that some applications are easier to maintain than others due to variations in documentation, organization and software architecture.

    Portability, or the ability to run applications in new environments, can also be impacted by the developer, and not simply by the tools she uses. For example, an application that utilizes many environment specific utilities may be more difficult to port to a new environment where those utilities may be unavailable or handled in a different manner.

    With eDeveloper V10, you gain a software development environment for application development, testing, and deployment that enhances software quality in all of these areas for a number of reasons. In future posts, will look at all of these areas in detail.

    Thursday, February 22, 2007

    Magic eDeveloper Enters the Podcast Age

    Well folks, here it is the long awaited and much ballyhooed eDeveloper Contest podcast. Please click here and enjoy the first ever (and definitely not the last) Magic eDeveloper podcast.

    Wednesday, February 07, 2007

    Get Ready for Daylight Savings Time 2007

    Does your application use a table that lists the date and time of the switch to/from Daylight Savings time? If so, be forwarned: Congress has changed the dates in the United States beginning in 2007! Canada and many Carribean countries have changed their DST timetables as well.

    Previous start to DST: First Sunday of April (1 April 2007)
    New start of DST: Second Sunday of March (11 March 2007)
    Previous end of DST: last Sunday of October (28 October 2007)
    New end of DST: first Sunday of November (4 November 2007)

    What types of applications could be afected?

    Scheduling Applications. The most obvious are calendaring or scheduling applications, especially those that accomodate multiple international time zones. One example might be an international air freight scheduling system. Another example would be CRM scheduling systems that send email notices that localize the time of a scheduled appointment.

    Applications with Time Calculations. An application that performs calculations using minutes or hours could be thrown off. For example, piece workers who are paid bonuses based on exceeding a certain number of pieces in a given time period. The calculations could be off by 60 minutes or 1 hour.

    Data Synchronization Batch Jobs Suppose one data center is scheduled to synchronize data at a given local time, say 2 am, and another data center is normally completing its batch jobs prior to that so that the synched data center has current information -- or at least they should have, but the foreign data center does not know that it is synchronizing to data that has not yet updated because of the time change. Since it is a batch job that has not completed, the information could be off by a complete 24 hours or more. Any reports generated against that information, or supply chain orders dependent on that information, could be seriously off.

    Planes Will Not Fall Out of the Sky I talked to my colleagues about this and they reminded me that planes will not fall out of the sky. But it is worth considering now, whether any of your applications are dependent on accurate update of daylight savings time.

    Monday, February 05, 2007

    The New Report Generator

    Important: The New Report Generator is Here

    1. What is it good for?

    Many years ago eDeveloper (then named Magic) used to come bundled with a report generator. This was an amazing tool, basically allowing end users to create their own reports by letting them run existing reports, create new reports, delete reports, duplicate reports, load reports created by others, view the results of an existing report, or print a report, based on warehouse type views created by developers. Some of you may have missed the new report generator that was slipped into eDeveloper V10.1. It sort of snuck in the side door with the 10.1 version and very little noise has been made about it to date. So let's correct that now: the report generator is back and its more powerful than ever. There are two other ways to deal with report generation that are documented in the Help files for eDeveloper. But the new Report Generator has its own help files from which I will summarize.

    2. So, how do I use it?

    2.1. Loading

    1. Create a component and then zoom to select the ReportingGenerator.eci application from the Add_On directory.

    2. In the task you want to work with, set the Print Data property in the Options tab of the Task Properties dialog box to Yes.

    3. Run the program that you want to print data from.

    4. Press CTRL+P to open the Report Generator. The Select Report screen opens.

    2.2. Using the Generator
    The Select Report screen helps you manage reports with the following options (available as buttons or options in the File menu):

    • New - Opens the Report Creation wizard where you can create a new report.

    • Edit - Lets you edit the report that you have selected.

    • Delete - Deletes the report that you have selected.

    • Duplicate - Copies the report that you have selected.

    • Load - Lets you use reports created by others for the same eDeveloper program. You do this by moving reports to a visible place on your computer and then clicking the Load icon. This enables you to select the required report. This option is in the File menu.

    • Preview - Provides a preview of the report that you have selected.

    • Print - Prints the report that you have selected.

    2.2.1. Report Creation Wizard

    The Report Generator is equipped with a wizard that helps you create your report easily, step by step. Click New in the Select Report screen to activate the Report Creation wizard.
    The Report Creation wizard contains six simple steps, but you do not have to complete all six steps to create a report. You may complete your report and exit the wizard at any time by clicking Finish or Close.
    If you click Finish, the wizard closes, the Design screen opens, and the information you have entered in the wizard screens is automatically saved.
    If you click Close, the wizard closes, the Design screen opens, but the information you have entered will not be saved unless you click Save.
    The six steps of the Report Generation Wizard are: Setting

    The Setting step lets you define your report name and layout.
    The report default name is the name of the eDeveloper program where the Report Generator is activated Columns

    The Columns step lets you select the variables you want to display, and their order, in the report table.
    The left part of the screen shows the available columns, which includes all the fields selected in the eDeveloper program. The right part of the screen shows the columns you selected to be included in your report.
    On the Columns screen you can perform the operations listed below:
    • Rename a column by clicking on the column, and then clicking the button. Enter a new name in the Column Properties dialog box and click OK.Note: This only changes the column name for the current report.

    • Change the Date Format by marking a Date column you would like to change and pressing the button. You can edit the column name and change its date format in the Column Properties dialog box and click OK.Note: The default format for Date columns is dd/mm/yyyy.

    • Select all columns by pressing the button.

    • Select a variable by using one of the following methods:
      Drag a variable from the Available Items list to the Selected Items list.
      Select a variable and click the button.
      Double-click on a variable in the Available Items list.

    • Unselect all columns by pressing the button.

    • Unselect a column by marking the column and pressing the button.

    • Move a column up by marking it and clicking the button.

    • Move a column down by marking it and clicking the button Sections

    The Sections step lets you divide your report into subsections that are similar to the grouping in eDeveloper.
    On the Sections screen you can perform the operations listed below:

    • Define Section Properties – Click on the section whose properties you want to define, and then click the button to:
      - Change the title of a section.
      - Choose if you want to start the section on a new page.
      - Choose if you want to print the section title on every page.

    • Select a column by using one of the following methods:
      - Drag a variable from the Available Items list to the Selected Items list.
      - Select a variable and click the button.
      - Double-click on a variable in the Available Items list.

    • Unselect all columns by pressing the button.

    • Unselect a column by marking the column and pressing the button.

    • Move a column up by marking it and clicking the button.

    • Move a column down by marking it and clicking the button. Sorting
    The Sorting step lets you define the sort order of the report.
    On the Sorting screen you can perform the operations listed below:

    • Change the Sort order by selecting a column and pressing the button to open the Sort Properties dialog box and select the change.Note: The default sort order of a column is ascending.

    • Select the columns by using one of the following methods:
      - Drag a column from the Available Items list to the Selected Items list.
      - Select a column and click the button.
      - Double-click on a column in the Available items list.

    • Unselect all columns by pressing the button.

    • Unselect a column by marking the column and pressing the button.

    • Move a column up by marking it and clicking the button.

    • Move a column down by marking it and clicking the button. Filtering

    The Filtering step lets you define an expression that will filter the report result.
    Create a filtering expression by dragging and dropping Functions, Operations, or Variables (variable names are preceded by ~) from the right list to the left working area.
    Click Test to check if the expression you created is valid. Accumulators

    The Accumulators step lets you create Accumulators for your report, such as the total salaries amount or employee count.
    Create a new Accumulator by selecting a column from the Available Items list on the left and moving it to the Selected Items list on the right.
    On the Accumulators screen you can perform the operations listed below:

    • Define the Accumulator type by selecting an accumulator and clicking the button.Note: The default type for numeric data is SUM, and the default type for all other data is Count.

    • Select the Accumulators by using one of the following methods:
      - Drag a column from the Available Items list to the Selected Items list.
      - Select a column and click the button.
      - Double-click on a column in the Available items list.

    • Unselect all Accumulators by pressing the button.

    • Unselect an Accumulator by marking the column and pressing the button.

    • Move an Accumulator up by marking it and clicking the button.

    • Move an Accumulator down by marking it and clicking the button.
    2.2.2. The Design Screen
    The main screen of the Report Generator is the design screen, which lets you graphically design and save the report.
    To help you create a better report with less effort, the Design screen contains the tools listed below: Drawing Aids Palette
    The Drawing Aids palette helps you arrange the Elements and Variables you have added to the report. The buttons on this palette identify the available operations, and a ToolTip describes each operation. Elements List Palette
    The Elements List palette lets you add elements to your report. There are three types of Elements:

    • Variables – All the fields you selected in the invoking eDeveloper program with the names you gave them.

    • Added Variables – The variables you added to the report using the Variables Management Tool.

    • Internal Elements that help you design your report properly, including:
      Simple Text
      Report Title
      Page Number Report Generation Design Toolbar
    The Report Generator Design toolbar lets you perform the operations needed to create your report. The toolbar buttons include:

    • Saves your report with the changes you made.

    • Displays the report you created.

    • Print the report.

    • Similar to the Wizard’s Setting screen.

    • See Variables Management Tool.

    • Similar to the Wizard’s Columns screen.

    • Similar to the Wizard’s Sections screen.

    • Similar to the Wizard’s Sorting screen.

    • Similar to the Wizard’s Filtering screen.

    • Similar to the Wizard’s Accumulators screen.

    • Lets you redesign the screen according to the default values. When you press this button, all the changes you made will be lost

    • Displays the Elements List Palette.

    • Displays the Drawing Aides Palette. Variables Management Tool
    Click on the Report Generator Design Toolbar to add and remove Variables and User Questions to your report.
    Adding Variables:

    • To add a new variable, press the Add Variable button, enter the variable name, select the variable type, and click OK to open a Column Properties dialog box.

    • Create an expression by dragging and dropping Functions, Operations, or Variables (variable names are preceded by ~) from the right list to the left working area.

    • Click Test to check if the expression you created is valid.

    • Click OK to complete the new variable creation.

    • Adding User Questions
      The User Questions mechanism lets you ask the user who will run the report questions that will influence the report result data. Click the Add User Question button, enter the Name and Question type in the Add New Variable dialog box, and click OK to continue. You can later find your question by this name in the Expression Editor.
      In the User Question dialog box, enter the question you want the user to see and the default value of the answer.

    • Removing Variables and User Questions
      To remove a variable or user question you added to the report, select the variable you want to remove, and click the Remove variable button.

    • The Remove variable button is only applicable for variables and user questions you created in the Report Generator.
    2.3. Summary

    No more simple reports hustle. The new report generator allows developers to create a view using main application entities linked to each other. The column names can be changed to user friendly names in the Dataview tab. Users can then create simple reports based on that view, allowing developers to concentrate on what they do best.

    Tuesday, January 30, 2007

    Quote of the Day -- David James

    "eDeveloper V10 does a great job in handling XML, parallel processing, debugging, and web services. It's a straight forward tool that helps us save time and money, while reacting quickly to our customers' changing business needs."

    David James
    Senior Developer,

    Windows Vista

    The much delayed Windows Vista operating system is now shipping from Microsoft.

    The official statement from Magic Software Enteprises is that

    "eDeveloper 10.1 SP2 and higher will be supported for "Windows Vista".

    Previous releases of Magic (including 9.4) are not supported and were never qualified."

    Monday, January 22, 2007

    New eDeveloper V10 OS Releases Announced

    Magic Software has added new operating system versions of eDeveloper V10 to the Downloads Area. These are available for download by customers with an eService account at

    The new versions posted last week are:

  • eDeveloper Server 10.1 SP1 for IBM AIX
  • eDeveloper Server 10.1 SP1 for Sun Solaris
  • eDeveloper Server 10.1 SP1 for Linux
  • Quote of the Day -- David Schmukler

    XML enhancements and an upgraded RAD

    " an IT professional I am very impressed with eDeveloper 10's XML enhancements and the upgraded RAD. As to user experience, eDeveloper 10 allows multiple contacts, permitting two active windows to be open at the same time. This is a significant improvement to the user experience".

    David Schmukler
    Chief Technology Officer,
    New Era Solutions