سلام
دوستان من میخوام یک هنگام واردکردن یک سری اطلاعات در بانک اطلاعاتی اکسس یک فایل پی دی اف هم اتچ کنم.
حالا نحوه ی اینکار رو نمی دونم به چه صورت باید انجام بدم.میشه توضیح بدید>؟
Printable View
سلام
دوستان من میخوام یک هنگام واردکردن یک سری اطلاعات در بانک اطلاعاتی اکسس یک فایل پی دی اف هم اتچ کنم.
حالا نحوه ی اینکار رو نمی دونم به چه صورت باید انجام بدم.میشه توضیح بدید>؟
سلام
برای ذخیره فایل در بانک میتوانیم از کدی مشابه زیر استفاده کنیم:
Private Sub Command1_Click()
Dim bytDByte() As Byte
Dim sFl$
sFl$ = App.Path & "\mpdf.pdf"
Open sFl$ For Binary Access Read As #1
ReDim bytDByte(LOF(1))
Get #1, , bytDByte()
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("obj").Value = bytDByte
Close
End Sub
و برای بازیابی آن از بانک:
Private Sub Command2_Click()
Dim bytDByte() As Byte
Dim sFl$
sFl$ = App.Path & "\extpdf.pdf"
Open sFl$ For Binary Access Read Write As #1
bytDByte = Adodc1.Recordset.Fields("obj").Value
Put #1, , bytDByte
Close
End Sub
موفق باشید
سلام
ممنون از جواب خوبتون ولی میشه در مورد خطوط برنامه یک توضیح مختصر بدید؟؟ فیلدی که برای فایل PDF نوعش باید چی باشه؟؟ اینطور که من فهمیدم این سورس نام فایل رو در بانک ذخیره می کنه و فایل باید در کنار بانک باشه که وقتی نام بانک خونده میشه فایل رو باز کنه؟؟
ممنون
نقل قول:
در مورد خطوط برنامه یک توضیح مختصر بدید؟؟
Dim bytDByte() As Byteآرایه ای از نوع بایت اعلان می کنیم
Open sFl$ For Binary Access Read As #1فایل را برای خواندن باز میکنیم
ReDim bytDByte(LOF(1))فضای بافری را برای آرایه به اندازه طول فایل در نظر میگیریم
Get #1, , bytDByte()فایل را در آرایه می ریزیم
Adodc1.Recordset.AddNewرکورد جدیدی ایجاد و آرایه را در بانک ذخیره میکنیم، obj نام نمونه فیلد مورد نظر است که بایستی با نام جدید جایگزین شود
Adodc1.Recordset.Fields("obj").Value = bytDByte
bytDByte = Adodc1.Recordset.Fields("obj").Valueمحتویات فیلد مشخص شده را در آرایه میریزیم
Put #1, , bytDByteداده ها را در فایل باز شده میریزیم
باید از نوع OLE باشد، برای ذخیره داده های باینرینقل قول:
فیلدی که برای فایل PDF نوعش باید چی باشه؟؟
فایل کامل در بانک ذخیره میشود، برای ذخیره فقط مسیر فایل دو خط دستوری مانند زیر کافی است:نقل قول:
اینطور که من فهمیدم این سورس نام فایل رو در بانک ذخیره می کنه و فایل باید در کنار بانک باشه که وقتی نام بانک خونده میشه فایل رو باز کنه؟؟
Private Sub Command1_Click()
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("obj").Value = "C:\mpdf.pdf"
End Sub
موفق باشید
سلام
یک سوال دیگه هم داشتم: من چطوری می تونم یک فایل PDF را در نرم افزار Attach کنم؟؟ میشه اینم توضیح بدید؟آخه شما در برنامه فایل Mpdf را به صورت نرم افزاری Atach کردید! حالا من می خوام وقتی دارم اطلاعات رو در نرم افزار وارد می کنم خودم فایل PDF رو همونجا Attach نرم افزار کنم؟؟
تشکر
سلام علیکم
اگر منظورتون افزودن فایل به ریسورس است، تنها در زمان طراحی میتوانیم اینکار را انجام دهیم، کد بالا فایل را به دیتابیس ضمیمه میکند
موفق باشید
سلام خدمت همه عزیزان
محسن جان ممنونم از توضیحاتت
امکانش هست که پروسه دانلود آپلود فایل در دیتابیس رو با پروسزبار نمایش بدیم؟
ممنونم
یاعلی
سلام
ممنون از توضیحاتت
امکانش هست این دو قسمت (یعنی نمایش میزان دانلود و آپلود رو در پروسزبار) رو نمایش بدی؟
ممنونم
یاعلی
من برنامه Attach کردن فایل توسط نرم افزار رو نوشتم وو قتی یک فایل رو attach میکنی یک کپی در یک فولدر کنار فایل برنامه می سازه و اونجا کپی می کنه و بعد نام فایل PDF را در بانک ذخیره می کنه(خاصیت فیلد هم Text می باشد).حالا سوالم اینه که وقتی اسم فایل رو از بانک می خونم چجوری میشه فایل رو باز کرد؟؟؟
این روش هم کسی بلده به؟؟؟
سلام علیکم
اگر در کدی که در پست های قبل دادم استفاده میکنید، آیا نام فایلی که در کنار برنامه ایجاد میشود mpdf.pdf است؟؟، اگر اینطور است خب بایستی ابتدا مسیر فایل مورد نظرتان را جایگزین مسیر نمونه موجود در متغیر sFl کنید چراکه مسیر فعلی فقط یک نمونه است و اینکه فایلی در کنار برنامه ایجاد میشود به این دلیل است که چون فایلی با این نام در کنار برنامه وجود ندارد Open یک فایل با نام mpdf در کنار برنامه ایجاد میکند و اگر فضای آنرا را بررسی کنید 0 است
همچنین اگر قصد دارید دارید فایلی را به بانک ضمیمه کنید حتما بایستی نوع فیلد از نوع OLE-Object باشد برای ذخیره محتوی باینری، چرا که نوع Text محتوی رشته ای را نگهداری میکند
موفق باشید
سلام علیکمنقل قول:
نوشته شده توسط ali190
خواهش میکنم
نمونه زیر را بررسی کنید
موفق باشید
سلام
ممنونم محسن جان از سورسی که قرار دادی
فقط یه مشکل کوچیک وجود داره
اونم اینکه میزان زمانی که در هنگام آپلود طول میکشه تا فایل در دیتابیس آپدیت بشه در پروسزبار نشون داده نمیشه
اونم میشه کاریش کرد؟
ممنونم
یاعلی
سلام علیکمنقل قول:
میزان زمانی که در هنگام آپلود طول میکشه تا فایل در دیتابیس آپدیت بشه در پروسزبار نشون داده نمیشه اونم میشه کاریش کرد؟
حسابش نکرده ام
پس این قسمت (یعنی زمان صرف شده جهت آپدیت شدن رکورد قابل محاسبه نیست) قابل محاسبه کردن نیست
درسته؟
سلامنقل قول:
پس این قسمت (یعنی زمان صرف شده جهت آپدیت شدن رکورد قابل محاسبه نیست) قابل محاسبه کردن نیست
درسته؟
در مورد زمان سپری شده چرا مشکلی نیست اما تخمین زمان باقیمانده را اتمام آپلود/دانلود کمی وقت می خواهد
یعنی میشه زمان آپدیت شدن رکورد رو در زمان آپلود شدن فایل رو هم به پروسزبار افزود
چون در نمونه قبلی همونطور که میبینید وقتی پروسزبار به پایان میرسه چند ثانیه طول میکشه تا رکورد آپدیت بشه
این موضوع در مورد فایلهای حجیم تر محسوستره
مثلاً شما یک فیم 180 مگی رو آپلود کنید ، حودون متوجه موضوع میشید
من میخوام از این روش در دیتابیس SqlServer استفاده کنم
با عرض معذرت زیاد متوجه منظورتان نشدم، در صورت امکان کمی بیشتر توضیح بدین!
تا آنجایی که بنده متوجه شدم، برای بدست آوردن زمان سپری شده میتوانیم یکبار پیش از شروع عملیات با توابعی مانند apiی GetTickCount مقدار ثانیه را ذخیره و پس از انجام عملیات مجدد مقدار ثانیه موجود را بدست آورده که در اینصورت اختلاف این دو زمان میشود زمان سپری شده ما!
سلام
ممنونم از پیگیریتون
ببیند هسته اصلی کد آپلود کردن در اینجاست:
Do
If bExit Then Exit Do
If (lFL& - Seek(iFF%)) < lBytes& Then ReDim bytDByte(lFL& - Seek(iFF%))
Get #1, , bytDByte
Adodc2.Recordset.Fields("xfile").AppendChunk bytDByte
lCurProg& = lCurProg& + 1
ProgressBar1.Value = lCurProg&
Caption = lCurProg& & "/" & lSplit& & " - " & (lFL& - Seek(iFF%)) & "/" & lFL& & " - Max bytDByte:" & UBound(bytDByte)
DoEvents
Loop Until EOF(iFF%) Or Seek(iFF%) >= lFL&
Adodc2.Recordset.UpdateBatch
Close iFF%
MsgBox "Uploading Completed...", vbInformation
حال این کد رو به دو بخش تقسیم میکنیم:
بخش اول که در این قسمت عملیات با پروسزبار نمایش داده میشود:
Do
If bExit Then Exit Do
If (lFL& - Seek(iFF%)) < lBytes& Then ReDim bytDByte(lFL& - Seek(iFF%))
Get #1, , bytDByte
Adodc2.Recordset.Fields("xfile").AppendChunk bytDByte
lCurProg& = lCurProg& + 1
ProgressBar1.Value = lCurProg&
Caption = lCurProg& & "/" & lSplit& & " - " & (lFL& - Seek(iFF%)) & "/" & lFL& & " - Max bytDByte:" & UBound(bytDByte)
DoEvents
اما در بخش دوم ما باید رکورد مورد نظر رو در دیتابیس Update کنیم
Loop Until EOF(iFF%) Or Seek(iFF%) >= lFL&
Adodc2.Recordset.UpdateBatch
Close iFF%
MsgBox "Uploading Completed...", vbInformation
این بخش از کد بهیچ وجه در پروسزبار به نمایش در نمیاد
شما وقتی این عملیات رو با یه فایل مثلاً 200 مگابایتی انجام میدید میبینید که بعد از این پروسزبار به انتها رسید حدوداً 14 ثانیه زمان بروزرسانی طول میکشه
که این زمان بسته به حجم فایل بیشتر هم میشه
امیدوارم تونسته باشم منظورم رو برسونم
بازهم ممنونم
یاعلی
سلام علیکم
مجددا ضمیمه قبلی را بررسی کنید، انشاء الله درسته
موفق باشید
این همه نوشتید اگر از همون اول یه نمونه میزاشتید نیاز به اینهمه نامه نگاری نبود:بوس:
سلام
دوست عزیز اینجا سایت آموزشی است نه ماهیگیری !