PDA

View Full Version : بهم چسباندن اطلاعات یک جدول و قراردادن آن در یک سطر



SayeyeZohor
یک شنبه 17 آذر 1392, 00:35 صبح
با سلام خدمت دوستان

من دو جدول دارم که به صورت Master/Detail هستند


113654


اطلاعاتی که می خوام رو با استفاده از این دستور
SELECT 'ارسال '+Str(TDetailEblagh.TedadBargEblagh)+' برگ '+TDetailEblagh.EblaghType+' مربوط به '+TDetailEblagh.NameKarfarma + ' به ' + TMasterEblagh.NameShobeh + ' تعداد کل ' + Str(TMasterEblagh.TedadKol) +' برگ ' AS [اطلاعات جهت ثبت ابلاغ]
FROM TMasterEblagh INNER JOIN TDetailEblagh ON TMasterEblagh.ID = TDetailEblagh.IDEblagh
WHERE (((TMasterEblagh.ID)=[Forms]![FrmMasterEblagh]![ID]));
واکشی می کنم
113655

حالا میخوام اطلاعاتم به صورت پشت سرهم به این شکل در بیاد با استفاده کد اسکیوال
من از Query نرم افزار Access استفاده می کنم
113656

اطلاعات آخر می خوام در یک کوئری قابل نمایش باشه
ممنون

حمیدرضاصادقیان
یک شنبه 17 آذر 1392, 06:44 صبح
سلام.
در SQL Server با استفاده از For Xml Path میتونید اینکارو بکنید در Access نمیدونم آیا این دستور پشتیبانی میشه یاخیر.

dublsigma
دوشنبه 18 آذر 1392, 13:09 عصر
امتحان کنید

select exps1 + exps2 as [اطلاعات جهت ثبت ابلاغ]
from
(
SELECT TDetailEblagh.ID as id1, 'ارسال '+Str(TDetailEblagh.TedadBargEblagh)+' برگ '+TDetailEblagh.EblaghType+' مربوط به '+TDetailEblagh.NameKarfarma + ' به ' + TMasterEblagh.NameShobeh + ' تعداد کل ' + Str(TMasterEblagh.TedadKol) +' برگ ' AS exps1-- [اطلاعات جهت ثبت ابلاغ]
FROM TMasterEblagh INNER JOIN TDetailEblagh ON TMasterEblagh.ID = TDetailEblagh.IDEblagh
WHERE (((TMasterEblagh.ID)=[Forms]![FrmMasterEblagh]![ID]))
)
inner join
(
SELECT TDetailEblagh.ID as id2, 'ارسال '+Str(TDetailEblagh.TedadBargEblagh)+' برگ '+TDetailEblagh.EblaghType+' مربوط به '+TDetailEblagh.NameKarfarma + ' به ' + TMasterEblagh.NameShobeh + ' تعداد کل ' + Str(TMasterEblagh.TedadKol) +' برگ ' AS exps2-- [اطلاعات جهت ثبت ابلاغ]
FROM TMasterEblagh INNER JOIN TDetailEblagh ON TMasterEblagh.ID = TDetailEblagh.IDEblagh
WHERE (((TMasterEblagh.ID)=[Forms]![FrmMasterEblagh]![ID]))
)
on id1 = (select min(id) from TDetailEblagh)
and id2 = (select max(id) from TDetailEblagh)

SayeyeZohor
دوشنبه 18 آذر 1392, 17:09 عصر
select exps1 + exps2 as [اطلاعات جهت ثبت ابلاغ]
from
(
SELECT TDetailEblagh.ID as id1, 'ارسال '+Str(TDetailEblagh.TedadBargEblagh)+' برگ '+TDetailEblagh.EblaghType+' مربوط به '+TDetailEblagh.NameKarfarma + ' به ' + TMasterEblagh.NameShobeh + ' تعداد کل ' + Str(TMasterEblagh.TedadKol) +' برگ ' AS exps1-- [اطلاعات جهت ثبت ابلاغ]
FROM TMasterEblagh INNER JOIN TDetailEblagh ON TMasterEblagh.ID = TDetailEblagh.IDEblagh
WHERE (((TMasterEblagh.ID)=[Forms]![FrmMasterEblagh]![ID]))
)
inner join
(
SELECT TDetailEblagh.ID as id2, 'ارسال '+Str(TDetailEblagh.TedadBargEblagh)+' برگ '+TDetailEblagh.EblaghType+' مربوط به '+TDetailEblagh.NameKarfarma + ' به ' + TMasterEblagh.NameShobeh + ' تعداد کل ' + Str(TMasterEblagh.TedadKol) +' برگ ' AS exps2-- [اطلاعات جهت ثبت ابلاغ]
FROM TMasterEblagh INNER JOIN TDetailEblagh ON TMasterEblagh.ID = TDetailEblagh.IDEblagh
WHERE (((TMasterEblagh.ID)=[Forms]![FrmMasterEblagh]![ID]))
)
on id1 = (select min(id) from TDetailEblagh)
and id2 = (select max(id) from TDetailEblagh)

SayeyeZohor
دوشنبه 18 آذر 1392, 18:27 عصر
نه دادا کار نداد:عصبانی++:

hossein_h62
سه شنبه 19 آذر 1392, 07:19 صبح
سلام
اگه بانکتون SQL بود راحت میشد این کار رو انجام داد ولی اکسس فکر نکنم بشه، تو همون دلفی با حلقه رکورد به رکورد بخون و همش رو بهم الصاق کن.:چشمک: