PDA

View Full Version : سوال: فراخوانی و نمایش تصویر ذخیره شده در یک جدول از نوع Attachment



atf1379
یک شنبه 30 مهر 1402, 00:51 صبح
سلام
میخواهم تصویری از نوع Attachment از یک فیلد جدول در دیتابیس دیگر از طریق متد Ado در فرمم فراخوانی و نمایش بدهم
در حالتی که خاصیت ControlSource فیلد مربوطه در حالت باند bound باشه و جدول در دیتابیس جاری باشه تصویر نمایش داده میشه ولی اگه این خاصیت در حالت آنباند unbound باشه تصویر چگونه نمایش داده میشه ؟
با تشکر

mazoolagh
سه شنبه 02 آبان 1402, 18:41 عصر
سلام و روز خوش

البته جدول میتونه در دیتابیس دیگه هم باشه،
ولی بصورت linked table و نه این که با adodb بهش وصل بشین.

تا اونجا که میدونم:
دیتا فیلدهای پیوست خودش یک رکوردست از نوع recordset2 هست و این نوع رکوردست رو adodb پشتیبانی نمیکنه.
با اینحساب نظر من اینه که خواسته شما نشدنی هست - حتی اگر جدول شما bound هم باشه.
یعنی مشکل بخاطر unbound بودن فرم نیست ، بخاطر کانکشن adodb هست.

امیدوارم اینها اشتباه باشه یا در ورژن های جدید فکری به حالش شده باشه یا یک راه حل tricky داشته باشه.
تا اون موقع باید فکر دیگه ای بردارین.

--------
دوباره هم میگم هر چند شاید دلسرد کننده بنظر بیاد،
ولی استفاده از اکسس باید در چارچوب اهداف و کاربردهایی باشه که براش ساخته شده که مهمترین اونها :
محیط یکپارچه، ساخت ساده و سریع فرم (بخصوص bound) و گزارش، ابزار کدنویسی هست.

وقتی یک پروژه قرار هست با اکسس پیاده بشه اگر نیازهای اون با همین امکانات استاندارد میخونه که بهتر،
وگرنه باید قبلش هر چیزی که خارج از امکانات ذاتی اکسس هست بررسی بشه (اگر نمیدونیم هست یا نه بررسی کنیم)
که آیا راهی براش هست یا نه - مثل لوله ای که قبل از نصب در شبکه باید یک نگاه به درونش بندازیم ببینیم گرفتگی، زدگی، پوسیدگی نداشته باشه و تا آخر مسیر سالمه.

گام به گام جلو رفتن و رسیدن به یک مانع و دنبال راه حل گشتن برای زمانی هست که بصورت خودآموز و سعی و خطا دنبال یادگیری باشم.

eb_1345
چهارشنبه 03 آبان 1402, 02:30 صبح
سلام
خواسته شما با استفاده از موتور پایگاه داده DBEngine شدنیه
به اینصورت که آدرس پایگاه داده رو در DBEngine قرار میدی و اونرو با Me.Recordset ست می کنی و در نهایت ControlSource تصویر رو برابر با فیلد Attachment
در جدول مربوطه قرار بده

eb_1345
چهارشنبه 03 آبان 1402, 03:00 صبح
در کل در حالت unbound بودن فرم که RecordSource فرم و ControlSource فیلد خالیه RecordSource فرم باید برابر با رشته SELECT * FROM tableName قرار داد و ControlSource فیلد تصویر هم برابر با فیلد جدول مربوطه
حالا در حالتی که که جدول در دیتابیس دیگه ایست اینکار رو باید از طریق موتور پایگاه داده DBEngine انجام داد
موفق باشی

atf1379
پنج شنبه 04 آبان 1402, 16:08 عصر
سلام
درود فراوان بر هر دو استاد عزیز و گرامی
ممنون

mazoolagh
شنبه 06 آبان 1402, 11:18 صبح
سلام
خواسته شما با استفاده از موتور پایگاه داده DBEngine شدنیه
به اینصورت که آدرس پایگاه داده رو در DBEngine قرار میدی و اونرو با Me.Recordset ست می کنی و در نهایت ControlSource تصویر رو برابر با فیلد Attachment
در جدول مربوطه قرار بده


سلام جناب بهرامی و روز شما خوش
راستش من اصلا متوجه فرمایش شما نشدم.
ممنون میشم اگر لطف کنین بیشتر توضیح بدین و نمونه کد بگذارین (همون زیردیپلم).


من قبلا با مشکل دیده نشدن فیلدهای attachment در adodb روبرو شده بودم،
البته خطا هم نمیده - فقط دیده نمیشه.

eb_1345
شنبه 06 آبان 1402, 19:22 عصر
سلام جناب بهرامی و روز شما خوش
راستش من اصلا متوجه فرمایش شما نشدم.
ممنون میشم اگر لطف کنین بیشتر توضیح بدین و نمونه کد بگذارین.
من قبلا با مشکل دیده نشدن فیلدهای attachment در adodb روبرو شده بودم،
البته خطا هم نمیده - فقط دیده نمیشه.
سلام جناب استاد mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh) عزیز !
دو نمونه ضمیمه رو ملاحظه بفرمائید!
در نمونه اول جدولی که فیلد Attachmen در اون قرار داره در داخل خود فایل اکسس هستش و در نمونه دوم این فیلد در جدولی خارج از فایل و در یک فایل دیگه تحت عنوان Data.accdb وجود داره.
در هر دو نمونه فرم ها در حالت unbound و خصوصیت RecordSource فرم و ControlSource فیلد خالیه
ارادتمند : بهرامی

کدهای نمونه اول :


Me.RecordSource = "SELECT * FROM TblAttachment;"
attachFile.ControlSource = "attachFile"

کدهای نمونه دوم :


Dim pwdcDB As String
Dim sql As String
Dim strPath As String
strPath = Access.CurrentProject.Path & "\Data.accdb"
pwdcDB = 125
sql = "SELECT * FROM table1 WHERE ID=" & ID & ""
Set Me.Recordset = DBEngine.OpenDatabase(strPath, False, False, ";pwd=").OpenRecordset(sql, dbOpenDynaset)
Me.AttachFile.ControlSource = "attach"

mazoolagh
یک شنبه 07 آبان 1402, 17:38 عصر
سلام جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh) عزیز !
دو نمونه ضمیمه رو ملاحظه بفرمائید!

سلام دوباره خدمت جناب بهرامی عزیز
ممنون از این که قابل دونستین و پاسخ دادین،
و همچنین بابت وقتی گذاشتین.

اینجور بنظر میاد که ما از دو دیدگاه متفاوت به پرسش نگاه کردیم.
من فقط بخش adodb رو دیدم و شما جنبه unbound رو در نظر داشتین.
به عبارتی "محل نزاع" مشخص نبود.

به هر حال بهانه خوبی بود تا مثل همیشه از محضر شما استفاده ببرم.

eb_1345
یک شنبه 07 آبان 1402, 19:43 عصر
سلام دوباره خدمت جناب بهرامی عزیز
ممنون از این که قابل دونستین و پاسخ دادین،
و همچنین بابت وقتی گذاشتین.

اینجور بنظر میاد که ما از دو دیدگاه متفاوت به پرسش نگاه کردیم.
من فقط بخش adodb رو دیدم و شما جنبه unbound رو در نظر داشتین.
به عبارتی "محل نزاع" مشخص نبود.

به هر حال بهانه خوبی بود تا مثل همیشه از محضر شما استفاده ببرم.
سلام
خواهش می کنم استاد !
ما شاگرد شمائیم

atf1379
چهارشنبه 10 آبان 1402, 05:13 صبح
اینجور بنظر میاد که ما از دو دیدگاه متفاوت به پرسش نگاه کردیم.
من فقط بخش adodb رو دیدم و شما جنبه unbound رو در نظر داشتین.




سلام و عرض ادب مجدد خدمت اساتید عزیز
با راهکاری که جناب آقای بهرامی ارائه نمودن مشکل بنده برطرف شد اما در ارتباط با موضوع این تاپیک این ابهام همچنان برایم باقی موند و اون اینکه آیا این مشکل عدم نمایش ودیده نشدن فیلدهای از نوع attachment با استفاده از متد adodb فقط در محیط اکسس وجود داره یا در محیط های برنامه نویسی دیگه هم همینجوریه ؟ مثلا فرض کنید در محیط ویژوال بیسیک میخواهیم از یک جدول پایگاه داده اکسس یا اسکیوال سرور فیلدی رو از این نوع نمایش بدیم در این حالت از چه روشی باید استفاده بشه ؟
با تشکر فراوان

simorgh2000
پنج شنبه 11 آبان 1402, 22:16 عصر
سلام دوست عزیز
بهتر است نوع فیلد تصویر متنی (ذخیره آدرس عکس موجود در یک پوشه در فیلد تصویر ) یا باینری باشه .
به سایت فردانش مراجعه کنید و آموزش پیشرفته اکسس و اتصال به sql server با Ado داده شده و اونجا از نحوه ی ذخیره تصویر در دیتابیس sql server بصورت باینری داده شده است.

mazoolagh
شنبه 13 آبان 1402, 12:53 عصر
مثلا فرض کنید در محیط ویژوال بیسیک میخواهیم از یک جدول پایگاه داده اکسس یا اسکیوال سرور فیلدی رو از این نوع نمایش بدیم در این حالت از چه روشی باید استفاده بشه ؟
اینو من پست شماره 2 توضیح دادم که نمیشه! (مگر این که خلافش ثابت بشه)

فیلد پیوست یک فیلد باینری معمولی نیست ، خودش یک رکوردست هست.

با فیلد باینری مشکلی ندارین، که در پست شماره 11 هم اشاره شد.

atf1379
یک شنبه 14 آبان 1402, 12:10 عصر
اینو من پست شماره 2 توضیح دادم که نمیشه! (مگر این که خلافش ثابت بشه)

فیلد پیوست یک فیلد باینری معمولی نیست ، خودش یک رکوردست هست.

با فیلد باینری مشکلی ندارین، که در پست شماره 11 هم اشاره شد.
ممنون از راهنمائی ها و کمک های همیشگیتون