PDA

View Full Version : سوال: استفاده از dataset در دلفی



Pascal
پنج شنبه 06 مرداد 1390, 18:49 عصر
چطور می توان از dataset که خروجی یک وب سرویس نوشته شده با #C است ، در دلفی استفاده کرد؟
اینجا (http://edn.embarcadero.com/article/28631) را هم دیدم اما چیزی نفهمیدم!

vcldeveloper
جمعه 07 مرداد 1390, 01:58 صبح
وب سرویس مربوطه دقیقا چه خروجی میده؟ از WSDL Importer دلفی استفاده کردید؟ اگر بله، چه نتیجه ایی داد؟

Pascal
جمعه 07 مرداد 1390, 22:29 عصر
وب سرویس مربوطه دقیقا چه خروجی میده؟ از WSDL Importer دلفی استفاده کردید؟ اگر بله، چه نتیجه ایی داد؟

خروجی وب سرویس



بله از WSDL Importer دلفی استفاده کرده ام و منبع فایل تولید شده

vcldeveloper
شنبه 08 مرداد 1390, 01:10 صبح
این وب سرویس داره داده های یک دیتاست رو با فرمت DiffGrams (http://msdn.microsoft.com/en-us/library/ms172088%28v=VS.100%29.aspx)به کلاینت Serialize میکنه. این فرمت مورد استفاده دات نت برای نقل و انتقال داده های دیتاست هست. یک چیزی شبیه به فرمت Data Packet های TClientDataset در دلفی هست. دلفی به طور خودکار از این فرمت پشتیبانی نمیکنه؛ یعنی نمیتونه خودش در صورت برخورد با همچین داده ایی، براتون دیتاست بسازه، و این داده ها را درش کپی کنه، و داده را به صورت یک دیتاست معمولی در اختیار شما قرار بده. به جای این کار، دلفی این بخش از داده های برگشت داده شده توسط وب سرویس رو به صورت دیتای XML خام از طریق کلاس TXmlData به شما برگشت میده، تا شما خودتان این داده را Parse کنید. در کد تولید شده برای شما هم متد Gu در واقع یک شی از نوع TGuResult برگشت داده که یک خصوصیت از نوع TXmlData داره، و شما می تونید از طریق آن، به داده XML مربوطه دسترسی پیدا کنید.

این داده برگشتی رو می تونید خودتون پردازش کنید. اون بخش xs:schema ساختار دیتاست برگشتی را تعریف میکنه، و اون بخش diffgr:diffgram هم محتوای دیتاست را برگشت میده. می تونید با خواندن بخش مربوط به ساختار دیتاست برگشتی، ساختاری مشابه آن را با استفاده از ClientDataset دلفی ایجاد کنید، و سپس داده های بخش diffgr:diffgram را یکی یکی بخوانید و در این ClientDataset وارد کنید. اگر ساختار داده برگشتی همیشه ثابت هست، می تونید با استفاده از ابزار XML Binding دلفی، یک سند XML transformation تهیه کنید که با استفاده از آن، بتونید با استفاده از XmlTransformProvider، داده برگشتی از وب سرویس را به طور خودکار به داده قابل استفاده در ClientDataset تبدیل کنید.