[ vekica @ 29.03.2006. 12:52 ] @
Nisam hteo da postujem problem, misleci da ce google odraditi posao...

xml fajl generisem sa DataSet.WriteXml()...
u ovoj drugoj reviziji koristim xmlTextWriter a prvo sam zadavao sam fajl....

Elem debugovanjem sam skapirao da sam DataSet decimalne vrednosti bez fraktala tj (5, 0, 10000) cuva upravo ovako (5, 0, 10000) a ne (5.00 , 0.00, ....)


No meni u xml fajlu upravo treba to
<Uplata>0.00</Uplata>


Svaka ideja bi mi znacila, yebavam se vec dva dana oko ove gluposti....
[ Alex21 @ 29.03.2006. 13:30 ] @
Jednak problem sam imao i ja, s time da sam morao i preformatirati datum prije zapisa u XML.

Ja sam to riješio na način da sam kreirao XmlTextReader i nalodao ga s XML-om kojeg daje DataSet.

Npr. (C++)
Code:

System::Xml::XmlTextReader *xmlReader = new System::Xml::XmlTextReader(objDataset->GetXml(),XmlNodeType::Element, NULL);


Nakon toga sam prepisivao iz XmlTextReader u XmlTextWriter (sve se događa u memoriji) element po element i sve 0 pretvarao u 0.00

Code:

     while(xmlReader->Read()) {
            if(xmlReader->NodeType == XmlNodeType::Element) {
                                             // Start element
                xmlWriter->WriteStartElement(xmlReader->Name);
                fieldName = xmlReader->Name;
            }
            if(xmlReader->NodeType == XmlNodeType::Text) {
                if(fieldName->CompareTo(testName) == 0) {
                    // Reformatiranje datuma
                    DateTime dt = DateTime::Parse(xmlReader->Value->ToString());
                    xmlWriter->WriteString(dt.ToString("dd.MM.yyyy  HH:mm:ss", DateTimeFormatInfo::InvariantInfo));
                }
                else {
                       if(xmlReader->Value == "0")  {
                            xmlWriter->WriteString("0.00");
                       }
                       xmlWriter->WriteString(xmlReader->Value->ToString());
                      
                 }  
            }
            if(xmlReader->NodeType == XmlNodeType::EndElement) {
                                                   // End element
                xmlWriter->WriteEndElement();
            }
        }
        xmlWriter->Close();




[Ovu poruku je menjao Alex21 dana 29.03.2006. u 14:37 GMT+1]
[ jablan @ 29.03.2006. 13:42 ] @
Možda se nešto može uraditi manipulacijom interne XSD šeme u datasetu (hint: dodati simpleType sa postavljenim fractionDigits atributom, pa problematičnoj koloni dodeliti taj novi simpleType). Malo sam sad pokušavao, ali bezuspešno...
[ vekica @ 29.03.2006. 22:11 ] @
ljudi hvala na brzim odgovorima....

izgleda da je jedino resenje manuelno podesavanja sto sam i uradio..... zato se veoma zahvaljujem Alexu na kodu koji sam iskoristio (ukoliko neko zeli mogu da ga postavim ovde)

(kod pregleda decimalni broj i dodaje 00 ili skracuje broj decimala na 2 - ipak bez zaokrugljivanja brojeva)


sto se tice patterna i novih Simple Type koji bi se definisali u xml shemi mogu samo reci oni ne rade posao. Oni sluze pri unosu samih vrednosti da bi se vrednosti proverile po tom patternu.

Xml je i zamisljen kao cist prenos podataka a user interace bi trebao da prikazuje korisnku 0.00 umesto 0.


poz

[Ovu poruku je menjao vekica dana 29.03.2006. u 23:12 GMT+1]