Hi All, Now see what happen, when export Datate filled with a standard SQL query/stetement:
With this SQL Table:
CREATE TABLE [dbo].[TabExample](
[FieldNvar] [nvarchar](10) NULL,
[FieldInt] [int] NULL,
[FieldDate] [datetime] NULL
) ON [PRIMARY]
GO
With this record #1:
FieldNvar | FieldInt | FieldDate
lwebcode | NULL | 01/01/2017
with standard SQL to fill Dataset we can have some problem:
Dataset ds = ... "SELECT * FROM TabExample"
ds.WriteXml(sTargetXML);
//will return this XML:
<?xml version="1.0" standalone="true"?>
<NewDataSet>
<Table>
<FieldNvar>lwebcode</FieldNvar>
<FieldDate>2017-01-01T00:00:00+01:00</FieldDate>
</Table>
</NewDataSet>
FieldInt Was Not Write!
With this record #2:
FieldNvar | FieldInt | FieldDate
NULL | 2 | 01/01/2017
with standard SQL to fill Dataset we can have some problem:
Dataset ds = ... "SELECT * FROM TabExample"
ds.WriteXml(sTargetXML);
//will return this XML:
<?xml version="1.0" standalone="true"?>
<NewDataSet>
<Table>
<FieldInt>2</FieldInt>
<FieldDate>2017-01-01T00:00:00+01:00</FieldDate>
</Table>
</NewDataSet>
FieldNvar Was Not Write!
With this record #3:
FieldNvar | FieldInt | FieldDate
NULL | 2 | NULL
with standard SQL to fill Dataset we can have some problem:
Dataset ds = ... "SELECT * FROM TabExample"
ds.WriteXml(sTargetXML);
//will return this XML
<?xml version="1.0" standalone="true"?>
<NewDataSet>
<Table>
<FieldInt>2</FieldInt>
<FieldDate>1900-01-01T00:00:00+01:00</FieldDate>
</Table>
</NewDataSet>
If datetime has NULL value it will put firs day of datetime in xml
As in #2 FieldNvar Was Not Write!
To fix this issue, you have to edit SQL Statement using ISNULL Function:
Dataset ds = ... "SELECT ISNULL(FieldNvar, '') FieldNvar, ISNULL(FieldInt, '') FieldInt, ISNULL(FieldDate , '') FieldDate FROM TabExample"
with record #1, we have a error on converting Numeric Value to char, see later what to do.
with record #2
XML file will like:
<?xml version="1.0" standalone="true"?>
<NewDataSet>
<Table>
<FieldNvar/>
<FieldInt>2</FieldInt>
<FieldDate>2017-01-01T00:00:00+01:00</FieldDate>
</Table>
</NewDataSet>
with record #3
XML file will like:
<?xml version="1.0" standalone="true"?>
<NewDataSet>
<Table>
<FieldNvar/>
<FieldInt>2</FieldInt>
<FieldDate/>
</Table>
</NewDataSet>
with record #1 there is a last thing to do on all numeric value (int, decimal etc...), in SQL you neet to put ISNULL function with CAST our SQL query will Like:
Dataset ds = ... "SELECT ISNULL(FieldNvar, '') FieldNvar, CASE WHEN FieldInt IS NULL THEN '' ELSE CAST(FieldInt AS NVARCHAR(50)) END FieldInt, ISNULL(FieldDate , '') FieldDate FROM TabExample"
Now XML file will like:
<?xml version="1.0" standalone="true"?>
<NewDataSet>
<Table>
<FieldNvar>lwebcode</FieldNvar>
<FieldInt/>
<FieldDate>2017-01-01T00:00:00+01:00</FieldDate>
</Table>
</NewDataSet>
With this fix in sql statement, we can export every kind of fields and be sure that each field will be write on xml file.
No comments:
Post a Comment