Parsi Coders

نسخه‌ی کامل: XML در دلفی
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
صفحات: 1 2
سلام
چطور می توان در دلفی از فایل XML که معرف یک جدول است استفاده کرد؟؟؟
چطور می توان این فایل را به DBgrid و صل کرد ؟؟
چطور می توان روی این فایل گزارش گرفت و Query زد؟؟؟

لطفاً اگر کسی اطلاعاتی در این مورد داره کمک کنه
با تشکر
سلام
یعنی منظور شما این هست از جدول xml گذارش گرفت؟
چطور می توان این فایل را به DBgrid و صل کرد ؟؟
منظورتون به وصل کردن xml به dbgird بصورت مستقیم هست ؟
Export كردن اطلاعات به XML
انجام دادن اين كار از طريق ADO به راحتي استفاده از متد SaveToFile است.

به كد زير نگاهي بياندازيد:
کد:
ADOTable1.SaveToFile('C:\test.xml', pfXML);
همچنين با استفاده از كد زير مي توانيد فايل XML مربوطه را Load كنيد:
کد:
ADOTable1.LoadFromFile('C:\test.xml');')
البته به جاي pfXML مي توانيد از pfADTG مي توانيد استفاده كنيد كه در اين صورت اطلاعات در يك فايل به صورت Binary نوشته مي شود كه به موضوع مبحث ما ربطي ندارد.

Export كردن يك Table به XML با استفاده از ClientDataSet

براي انجام اين عمل با استفاده از ClientDataSet از مراحل زير استفاده كنيد:

1- يك كمپوننت TDataSetProvider (اين كمپوننت در تب DataAccess قرار دارد) بر روي فرم خود بگذاريد و با استفاده از پراپرتي DataSet آن را به Table يا Query و يا به طور كلي به Dataset مورد نياز خود متصل كنيد.

2- يك كمپوننت TClientDataSet (اين كمپوننت هم در تب DataAccess قرار دارد) بر روي فرم خود بگذاريد و مقدار ProviderName آن را برابر نام كمپوننت TDataSetProviderي قرار دهيد كه در مرحله 2 ساختيد.

3- به سادگي از متد زير استفاده كنيد:

کد:
ClientDataSet1.Active := True;

;(   ClientDataSet1.SaveToFile('C:\1.XML', dfXML)
پارامتر دوم متد SaveToFile مي توانيد شامل مقادير زير باشد: dfBinary, dfXML, dfXMLUTF8.

بررسي راجع به dfBinary به مبحث مقاله ما مربوط نمي شود.

حتما متوجه شده ايد كه تفاوت dfXML و dfXMLUTF8 چيست؟ dfXMLUTF8 براي Export اطلاعات به XML با فرمت Unicode استفاده مي شود. البته راههاي ديگري هم وجود دارد كه در نسخه هاي قديمي تر دلفي به كار مي آيند. اين مقاله از آقاي محمد باقر معموري به آدرس http://www.irandevelopers.com/ است

(09-03-2011، 10:20 AM)پارسا نوشته: [ -> ]سلام
یعنی منظور شما این هست از جدول xml گذارش گرفت؟
چطور می توان این فایل را به DBgrid و صل کرد ؟؟
منظورتون به وصل کردن xml به dbgird بصورت مستقیم هست ؟

بله از جدولی که در فایل XML هست گزارش گرفت و Query زد .یا بصورت مستقیم یا غیر مستقیم .ما یک فایل XML داریم که اطلاعات یک جدول از دیتابیس خود را در این فایل بصورت زیر ریختیم
-
<TST.PACKAGE_DEP2>
- <Records>
<ID>1</ID>
<PACKAGE_NAME>BCKPACK2.AAA</PACKAGE_NAME>
<DSN>SRVC</DSN>
<INDEX_NAME>COMMON.CUSTOMER_ACCOUNT__IDX</INDEX_NAME>
<INDEX_COLUMN>CUSTOMER_ACCOUNT_ID,</INDEX_COLUMN>
<INSERT_DATE>08/16/2011 10:43:01</INSERT_DATE>
<TBNAME>CUSTOMER_ACCOUNT</TBNAME>
<TBCREATOR>COMMON</TBCREATOR>
</Records>
..........
حالا باید بتونم در این جدول (xml) چهار عمل select ، Update, Delete و Insert را انجام بدم.
من تمام این خطوطی را که شما زحمت کشیدید در اینترنت دیدم ، اما جواب سوال من نیست ، من فایل رو ایجاد کردم. مشکل در خواند این فایل ایجاد شده است.
باید دلفی نصب کنم
نصب کردم پیوست میکنم
حتما برنامه باید با دلفی باشه؟
بله حتماً باید دلفی7 باشه.
من تو دلفی 2010 مینیویسم
اینم یه sample
کد:
var
    sl : TStringList;
    xmlDoc : TXMLDocument;
    iNode : IXMLNode;
begin
    xmlDoc := TXMLDocument.Create(nil) ;
    try
      xmlDoc.Active := true;

      iNode := xmlDoc.AddChild('leaf') ;
      iNode.Attributes['attrib1'] := 'value1';
      iNode.Text := 'Node Text';

      sl := TStringList.Create;
      try
        sl.Assign(xmlDoc.XML) ;

        sl.Insert(0,'<!DOCTYPE ns:mys SYSTEM "myXML.dtd">') ;
        sl.Insert(0,'<?xml version="1.0"?>') ;

        sl.SaveToFile('c:\Test.xml') ;
      finally
        sl.Free;
      end;

    finally
      xmlDoc := nil;
    end;
end;
  And here's the resulting XML:  <?xml version="1.0"?>
<!DOCTYPE ns:mys SYSTEM "myXML.dtd">
<leaf attrib1="value1">Node Text</leaf>
در سورس بالا از کامپونت TXMLDocument استفاده شده
insert add & save file در داخلش استفاده شده
مشکلی نداره شما با دلفی 10 لطف ککنید بنویسید ، من از IXMLDOMDocument
استفاده کردم . کد من از Table می خونه و در یک فایل XML ذخیره می کنه . این کار رو انجام دادم. که در زیر آوردم :
function TForm1.makeXml(table: TTable): Integer;
var
i : Integer;
xml,temp : String;
begin
try
table.close;
table.open;
xml := table.TableName;
doc := CreateOleObject('Microsoft.XMLDOM')
as IXMLDomDocument;
root := doc.createElement(xml);
doc.appendchild(root);
while not table.eof do begin
child:= doc.createElement('Records');
root.appendchild(child);
for i:=0 to table.FieldCount-1 do begin
child1 := doc.createElement(table.Fields[i].FieldName);
child.appendchild(child1);
child1.appendChild(doc.createTextNode(temp));
end;
table.Next;
end;
doc.save(xml+'.xml');
memo1.lines.Append(doc.xml);
Result:=1;
except
on e:Exception do
Result:=-1;
end;

حالا می خوام بر اساس یک شرایط مثلا اگر ایندکس XX بود اطلاعات آن نود را در DBgrid نمایش بده .
در ضمن سورس بالا که گفتید پیدا کردید لینکشو درج کرده بودم زیرش .
شما باید xml رو کاملا فراخوانی کنید.
پیشنهاد میکنم لینک زیر رو کاملا مطالعه فرامیید.
بهترین sample برای دلفی xml هست.
ادرس لینک :
http://delphi.about.com/od/windowsshella...delphi.htm
موفق باشید
صفحات: 1 2