We have realize problem of unicode text normalization and have implement tools into 4.9.1 to work with normalization issue. Detailed description of this issue is given on the following wiki page.
[ANN] iValentina 4.9 for iPhone and iPad APPROVED. FREE.
iValentina v4.9 was approved today.
You can use get it for FREE here: iPhone iPad
What’s New in Version 4.9
* Added TAB panels
* Added Keyboard Extension to type faster SQL commands
* Compiled against 4.2 SDK, so
* Added Multi-tasking support
* Added Table Editor
* Improved a lots speed of Table Editor thanks to caching in VCLIENT.
[DEPRECATED] I_Field::put_ID()
We have note that put_ID() should not be in the public interfaces of Schema Objects, because developer should not be able change ID of a scheme object.
We have check our sources, and found that only I_Field interface did have such method. So we move it into internal I_FieldEx interface. In the C++ header this method marked as DEPRECATED, and do nothing now. We believe that nobody from C++ developers have used it.
We will consider future ability to do “SET PROPERTY ID of Object name” via SQL, but this will be recommended for use by our own SQL scripts only.
[NEW] VStudio Linux 64 bit Version
We are glad to inform you, that for 4.9.1 version we will introduce Valentina Studio for Linux 64 bit version.
In the nearest 1-2 days we should upload 4.9.1 beta build of VStudio linux 32 and 64 bits.
[NEW] VLink.Count Property
We have discover that interface of VLink miss Count property to easy ask VLink how much pairs it contains.
Now this property is implemented in the vkernel. It works for all kinds of links (Binary, ObjectPtr and ForeignKey). It is implemented in effective way — only header of index is asked actually.
Adding of this property do minor extension of VSERVER protocol also.
[Improve] Warnings.log gets Header with Description
We have realize that if to add simple header to Warnings.log that describes what this log contains, when it should be used, and how it can be disabled for RELEASE then this will help to developers and remove often questions about this.
[NEW][C++] set of MACROS as GET_STRING( cursor, field_name)
Problem is that if you are a C++ developer and use VSDK for development,
then work with Values of Fields of cursor looks as:
I_Cursor_Ptr pCursor = db->SqlSelect( ... ); ... String s = pCursor->get_Field("Name" )->get_Value()->get_String(); double d = pCursor->get_Field("Weight")->get_Value()->get_Double(); ...
In contrast, for such languages as REALbasic or VB syntax is more short:
String str = pCursor.StringField( "fldName" ).value
We have decide that for C++ developer we can have set of simple macros that will allow C++ developer syntax as:
String str = GET_STRING( pCursor, "fldName" );
These macros are located in the: sources/FBL/VShared/VSQL/publ/Interfaces/VSQL_I_Cursor.h
Note, that more complex values as DateTime, Binary, still should be used in old way, because VSDK do not know format you goingto use. May be you can add own macroses in your project that looks similar and do job you need.
[NEW][C++] Family of toValue_xxx() factories for simple SQL binding
Now C++ developer can write simpler code as
ArrayOfValues_Ptr pValues = new ArrayOfValues(); pValues->AddItem( toValue_varchar(mName) ); pValues->AddItem( toValue_double(70.5) ); pValues->AddItem( toValue_long(size) );
Instead of:
ArrayOfValues_Ptr pValues = new ArrayOfValues(); Value_varchar* pValueName = new Value_varchar(); pValueName->put_String( mName.begin(), mName.end() ); pValues->AddItem( pValueName ); Value_double* pValueD = new Value_double(); pValueD->put_Double( 70.5 ); pValues->AddItem( pValueD ); ...
VCLIENT now Caches ServerSide Cursors. Speed Increased a lots…
Valentina CLIENT library provides not only read-only client-side cursor as do e.g. mySQL or PostgreSQL, but server-side cursor also, which can be in NoLocks, ReadOnly and ReadWrite modes.
While client-side cursor loads all result records into client computer RAM at single step, a server-side cursor loads one record only. This allows to use server-side cursors for huge SELECT results. But … if to make on such cursor a GUI grid table to display records, speed of display was not best, because each time GUI asks for other record to draw, server-side cursor have jump to VServer to load it.
Now we have cache for VCLIENT server-side cursors.
- Speed increased dramatically.
- VServer gets less job to do.
- Network traffic goes down
Continue reading VCLIENT now Caches ServerSide Cursors. Speed Increased a lots…
[NEW] iValentina 4.9 gets TAB-panels
We have add to iValentina 4.9 TAB-panels, what allow you easy and immediately switch between different views to the same database or even work with different servers or databases at the same time.
Also you can tap and wait on some schema object to see contextual menu, that give you choice to open that object in a new TAB panel.
[NEW] iValentina gets KeyBoard Extension
[NEW] Valentina Reports – get Shape Control
Converting FileMaker Pro Databases into LiveCode Applications
David Simpson has written an excellent article over on Omegabundle.com called Converting FileMaker Pro Databases into LiveCode Applications. dot com Solutions makes a powerful utility product called FmPro Migrator Platinum Edition that is a part of the latest Omegabundle for LiveCode 4.2011 offering. More than a utility, its really a one of a kind solution for porting Apple FileMaker Pro and Microsoft Access databases into full LiveCode applications, which in turn makes it possible to port the data store over to Valentina DB.
Valentina Reports get ODBC-datasource!
Valentina Reports now support ODBC datasource!
This is great, because now Valentina Reports can work with data stored practically in any database format (MS Access, MS SQL, Oracle, Postgre SQL, mySQL, … ) and even XML.
In Valentina Studio improved datasource dialog to support ODBC.
In a Valentina ADK code, you should specify connection string in the VProject.MakeNewReport( inDataSource ), as the following: odbc://dsn=access,user=name,pass=123
Will be available in the 4.9b5 build or newer.
Index search warnings
There are many find-like methods which are able to employ indexes to speed up the searching (FindLike, FindRegEx, FindContains, and so on). Of course, the field must be indexed and search preference is set to kPreferIndexed.
But currently there are two issues when index search may bring a wrong result:
1.Index keeps only first 256 symbols of the value – so rest of the symbols are just ignored in such a search.
2. Index-By-Words index and multi-word searching pattern.
Some of the methods like FindRegEx don’t use an index-search but scan the table instead if any of the above occurred. The rest of the methods are less strict choosing the searching algorithm. Now you will get the warning in such cases and you can switch algorithm to not-index search (kPreferNotIndexed) if it is relevant (less speedy but more accurate). Also you should consider to change index type of such a lengthly fields to the index-by-words.
Warning examples:
“Index search in the first 256 symbols only : FindContains t1:f1”
“Index-By-Words search : FindContains t1:f1”