22 Mar 2013

GB_flag

New TechTipp: Utility method that returns the primary key's field id

Could that work as described in the techtipp? Probably not, I suppose. A quick test using my System_Tables-component reveals: if this techtipp catches the right-field, it was luck.

Please test my approach!

I could test that approach against a couple of apps and the results seemed to be reasonable. If there is no primary-key, the function delivers 0.

You can achieve the same in System_Tables by first scrolling to the row with table-number and CONSTRAINT_TYPE "P", then a doubleclick on that row will directly check _USER_CONS_COLUMNS and select the row, with the fieldnumber for primary-key.

Please 4D TechSupport: keep TechTipps as untestet as they are. This drives bitten techtipp-users to us dyed-in-the-wool 4D-consultants. Thanks a lot!

Neuer TechTipp: Utility method that returns the primary key's field id

Kann das wie im TechTipp beschrieben funktionieren? Eher nicht würde ich meinen. Flugs mit meiner Komponente System_Tables getestet. Tja, die Treffer der Methode aus dem TechTipp sind Zufallstreffer.

Bitte dieses Verfahren ausprobieren!

In den Anwendungen in denen dieses Verfahren bisher getestet wurde, war das Ergebnis in Ordnung. Gibt es kein Primary-Key, liefert die korrigierte Funktion 0.

C_LONGINT($table_id_l;$primary_key_field_id_l)
C_TEXT($constrainID)
$table_id_l:=$1
Begin SQL
  // damit es nachvollziehbar bleibt in zwei Etappen | to keep it simple in two steps
  // erst den Constraint-ID suchen | first look for the container ID
  SELECT CONSTRAINT_ID
  FROM _USER_CONSTRAINTS
  WHERE TABLE_ID = :$table_id_l AND CONSTRAINT_TYPE = 'P'
  INTO :$constrainID;
  // und dann mit dem Constraint-ID die Feldnummer dazu | get the field-Nbr for the constraint-ID found
  SELECT COLUMN_ID
  FROM _USER_CONS_COLUMNS
  WHERE CONSTRAINT_ID = :$constrainID
  INTO :$primary_key_field_id_l;
End SQL
$0:=$primary_key_field_id_l

In System_Tables suchen Sie in _USER_CONSTRAINTS den Eintrag Tabellennummer und CONSTRAINT_TYPE "P". Dann reicht ein Doppelklick und sie bekommen die Zeile mit der Constraint-ID in _USER_CONS_COLUMNS angezeigt.

Ich freue mich, wenn der TechSupport ungetestete TechTipps veröffentlicht. Das ergibt eine zusätzliche Einnahmequelle. Trotzdem: Cave TechTipp!