vgulielmus
Programmer
1 STR() - ok
2 TRANSFORM with mask - ok
3 TRASNFORM without mask - wrong
4 TRASNFORM without mask but using intermediate results (cursors) - ok
Proof:
Respectfully,
Vilhelm-Ion Praisach
Resita, Romania
2 TRANSFORM with mask - ok
3 TRASNFORM without mask - wrong
4 TRASNFORM without mask but using intermediate results (cursors) - ok
Proof:
Code:
**************
* numeric
CLOSE DATABASES ALL
CREATE CURSOR cCur (cField c(10),nField n(10,2))
INSERT INTO cCur (cField,nField) VALUES ("PO01",300)
INSERT INTO cCur (cField,nField) VALUES ("PO01",200)
INSERT INTO cCur (cField,nField) VALUES ("PO01",100)
INSERT INTO cCur (cField,nField) VALUES ("PO02",300)
INSERT INTO cCur (cField,nField) VALUES ("PO02",500)
* Ok
SELECT * FROM cCur WHERE STR(nField,10,2)=;
(SELECT MIN(STR(nField,10,2)) FROM cCur jm WHERE jm.cField=cCur.cField)
* Ok
SELECT * FROM cCur WHERE TRANSFORM(nField,"@R 9999999.99")=;
(SELECT MIN(TRANSFORM(nField,"@R 9999999.99")) FROM cCur jm WHERE jm.cField=cCur.cField)
* No result
SELECT * FROM cCur WHERE TRANSFORM(nField)=;
(SELECT MIN(TRANSFORM(nField)) FROM cCur jm WHERE jm.cField=cCur.cField)
* Ok
SELECT cField,transform(nField) as nField FROM cCur INTO cursor _1
SELECT cField,MIN(transform(nField)) as nField FROM cCur GROUP BY 1 INTO cursor _2
SELECT * FROM _1 WHERE nField=;
(SELECT nField FROM _2 WHERE _2.cField=_1.cField)
**************
* integer
CLOSE DATABASES ALL
CREATE CURSOR cCur (cField c(10),iField n(10))
INSERT INTO cCur (cField,iField) VALUES ("PO01",300)
INSERT INTO cCur (cField,iField) VALUES ("PO01",200)
INSERT INTO cCur (cField,iField) VALUES ("PO01",100)
INSERT INTO cCur (cField,iField) VALUES ("PO02",300)
INSERT INTO cCur (cField,iField) VALUES ("PO02",500)
* Ok
SELECT * FROM cCur WHERE STR(iField)=;
(SELECT MIN(STR(iField)) FROM cCur jm WHERE jm.cField=cCur.cField)
* Ok
SELECT * FROM cCur WHERE TRANSFORM(iField,"@R 9999999")=;
(SELECT MIN(TRANSFORM(iField,"@R 9999999")) FROM cCur jm WHERE jm.cField=cCur.cField)
* No result
SELECT * FROM cCur WHERE TRANSFORM(iField)=;
(SELECT MIN(TRANSFORM(iField)) FROM cCur jm WHERE jm.cField=cCur.cField)
* Ok
SELECT cField,transform(iField) as iField FROM cCur INTO cursor _1
SELECT cField,MIN(transform(iField)) as iField FROM cCur GROUP BY 1 INTO cursor _2
SELECT * FROM _1 WHERE iField=;
(SELECT iField FROM _2 WHERE _2.cField=_1.cField)
**************
* double
CLOSE DATABASES ALL
CREATE CURSOR cCur (cField c(10),dField b(2))
INSERT INTO cCur (cField,dField) VALUES ("PO01",300)
INSERT INTO cCur (cField,dField) VALUES ("PO01",200)
INSERT INTO cCur (cField,dField) VALUES ("PO01",100)
INSERT INTO cCur (cField,dField) VALUES ("PO02",300)
INSERT INTO cCur (cField,dField) VALUES ("PO02",500)
* Ok
SELECT * FROM cCur WHERE STR(dField,10,2)=;
(SELECT MIN(STR(dField,10,2)) FROM cCur jm WHERE jm.cField=cCur.cField)
* Ok
SELECT * FROM cCur WHERE TRANSFORM(dField,"@R 9999999.99")=;
(SELECT MIN(TRANSFORM(dField,"@R 9999999.99")) FROM cCur jm WHERE jm.cField=cCur.cField)
* No result
SELECT * FROM cCur WHERE TRANSFORM(dField)=;
(SELECT MIN(TRANSFORM(dField)) FROM cCur jm WHERE jm.cField=cCur.cField)
* Ok
SELECT cField,transform(dField) as dField FROM cCur INTO cursor _1
SELECT cField,MIN(transform(dField)) as dField FROM cCur GROUP BY 1 INTO cursor _2
SELECT * FROM _1 WHERE dField=;
(SELECT dField FROM _2 WHERE _2.cField=_1.cField)
**************
* currency
CLOSE DATABASES ALL
CREATE CURSOR cCur (cField c(10),yField Y)
INSERT INTO cCur (cField,yField) VALUES ("PO01",300)
INSERT INTO cCur (cField,yField) VALUES ("PO01",200)
INSERT INTO cCur (cField,yField) VALUES ("PO01",100)
INSERT INTO cCur (cField,yField) VALUES ("PO02",300)
INSERT INTO cCur (cField,yField) VALUES ("PO02",500)
* Ok
SELECT * FROM cCur WHERE STR(yField,10,2)=;
(SELECT MIN(STR(yField,10,2)) FROM cCur jm WHERE jm.cField=cCur.cField)
* Ok
SELECT * FROM cCur WHERE TRANSFORM(yField,"@R 9999999.99")=;
(SELECT MIN(TRANSFORM(yField,"@R 9999999.99")) FROM cCur jm WHERE jm.cField=cCur.cField)
* No result
SELECT * FROM cCur WHERE TRANSFORM(yField)=;
(SELECT MIN(TRANSFORM(yField)) FROM cCur jm WHERE jm.cField=cCur.cField)
* Ok
SELECT cField,transform(yField) as yField FROM cCur INTO cursor _1
SELECT cField,MIN(transform(yField)) as yField FROM cCur GROUP BY 1 INTO cursor _2
SELECT * FROM _1 WHERE yField=;
(SELECT yField FROM _2 WHERE _2.cField=_1.cField)
Respectfully,
Vilhelm-Ion Praisach
Resita, Romania