1. Juli 2011

DE_flag GB_flag

for english readers

V12 und QUERY BY SQL

QUERY BY SQL($P_QTable->;$srchFormula)
$P_QTable-> ist eine Pointer auf eine Tabelle
$srchFormula ist "Text = '@Ábrahám@'"
wirft diesen Fehler

Error code: 1301
Generic parsing error. Parsing failed in or around the following substring interval - ( 30, 39 ) - ...e] WHERE Text = ...
component: 'SQLS'
task 8, name: 'ML_4'

Klasse! Und wo suche ich jetzt?

Nach zig-Jahren um die Ecke denken … nenne ein Feld nicht "Text", nenne es überhaupt nicht nach einem reservierten Wort.

Mal gut, daß ich in eigenen Datenbanken Felder immer nach Tabellenkürzel_Feldinhalt_Typ benenne.

Feldnamen geändert und "Generic parsing" klappt wieder.

Apropos Feldnamen. Wie kann man auf die Idee kommen, die ID-Felder jeder Tabelle "id" zu nennen. Was ist denn das für ein Datentyp: Zahl, UUID, …? Was ist, wenn ich das SQL-Statement zusammenstelle mit SELECT und JOIN und WHERE und überall taucht "id" auf. Ich verliere dann die Übersicht und ob es 4D besser geht, ja wer weiß. Also warum nicht "PERS_id_L" oder "PERS_key_UUID", dann lese ich die Tabelle und Datentyp und bin mir sicher.

Meine Benennungsregeln habe ich hier zusammengefaßt: Namen vergeben

DE_flag GB_flag

lieber auf deutsch

V12 and QUERY BY SQL

QUERY BY SQL($P_QTable->;$srchFormula)
$P_QTable-> is a pointer to a table
$srchFormula contains "Text = '@Ábrahám@'"
and throughs this error

Error code: 1301
Generic parsing error. Parsing failed in or around the following substring interval - ( 30, 39 ) - ...e] WHERE Text = ...
component: 'SQLS'
task 8, name: 'ML_4'

Super! Where to start searching?

After tens of years thinking beyond … don't call a field "Text", don't call a field like any reserved word.

How to avoid that? Build artificial names, like my habit of naming fields always by Tableabbreviation_fieldcontent_type. I'll stay with that!

Renaming the field and "Generic parsing" works again.

Concerning fieldnames. I wonder why naming the id-fields of every table "id" seems to be common sense. Which type is id, number, uuid, …? How about building an SQL-statement with SELECT and JOIN and WHERE and "id" all over the place. I loose control and who knows how 4D interprets? Why not "PERS_id_L" or "PERS_key_UUID" and I can read the table and datatype and can be confident.

If you like some training in german or trust Google-translate, you'll find more reading here about naming convention