1. Michał Misijuk
  2. PowerBuilder
  3. Thursday, 29 October 2020 19:06 PM UTC

Hi,

I have a DW, where in one of the column is string, with editmask ####.00

When I'm setting a value in DW like 1234.56, insert into database lookis like '123456' , and i would like to looks like 1234.56. 
I've tried GetItemFormattedString, and something hardcoded like string(dw.getitemstring,'####.00') but nothing works.

Is this even possible to get value with mask?

Oracle 12c, PB 2017 R3 build 1858

Chris Pollach @Appeon Accepted Answer Pending Moderation
  1. Thursday, 29 October 2020 19:35 PM UTC
  2. PowerBuilder
  3. # 1

Hi Michael;

   If the column type is "String" then the value would be "123456". If you change the column to be a decimal (7,2) - for example. Then the DWO would be sending a "1234.56" to the DBMS.

   If you still want the DWO's string (Char/Varchar) column to have the decimal formatting, then you would have to code that in the ItemChanged event. For example:

IF  String (DWO.Name) = "DecColumn"  THEN
    IF  POS (Data, ".", 1) =  0 THEN
        Data = String ( Data, "#.00")
    END IF
END IF

Regards ... Chris

Comment
There are no comments made yet.
Michał Misijuk Accepted Answer Pending Moderation
  1. Friday, 30 October 2020 07:43 AM UTC
  2. PowerBuilder
  3. # 2

Hi Chris.

What I want to acomplish, is filed where i can put, number, or 0 , or null. This is no problem when number is without coma, like 1234, or 55. Field is string, editmask with ####. Problem begins when coma appears. 

I've tried Your way - I've put this code in ItemChanged event, but when update is generating - this value is still without period.


PS I've put a MsgBox to show what value data contains after
data = string(data,'####.00') and it's this -> ####.00

Comment
  1. Chris Pollach @Appeon
  2. Friday, 30 October 2020 18:45 PM UTC
Chris Pollach @Appeon

Hi Michael ... Modified suggestion ....



IF String (DWO.Name) = "DecColumn" THEN

IF POS (Data, ".", 1) = 0 THEN

THIS.Post ue_set data ( DWO.Name , Data)

END IF



// In ue_set_data .(Args as_name and as_data) ...

IF Lower(as_name) = "deccolumn" THEN

IF POS (as_data, ".", 1) = 0 THEN

String ls_data

ls_data = String ( as_data, "#.00") // OR you could sub-string it ;-)

THIS.SetItem ( ls_name, ls_data )

END IF



Food for thought. HTH

Regards ... Chris
  1. Helpful
There are no comments made yet.
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.