PDA

View Full Version : اکتیو ریپورت و ارتباط با فیلد حاوی عکس ؟؟



maryamb
شنبه 19 مرداد 1387, 16:24 عصر
با سلام
من تو برنامم تو یه قسمت از گزارش گیری باید علاوه بر نام و نام خانوادگی و این چیزا ، عکس افراد رو هم نشون بده ، چطور می تونم این کارو بکنم؟
من یه کنترل ایمیج گذاشتم ولی نمی دونم چطوری بهش بگم از پایگاه داده بخونه و عکس رو نمایش بده.اصلا نمی دونم با کنترل ایمیج می شه یا باید کار دیگه کرد ؟؟
ممنون می شم کمکم کنید

hrj1981
شنبه 19 مرداد 1387, 19:48 عصر
من عكس هاي خودم را در خود بانك اطلاعاتي نمي گذارم :چون هم حجم بانك اطلاعاتي خيلي بالا ميره و هم يكسري مشكلات بعدي را در پي داره .براي اين كار عكسهاي خودم را در يك فولدر در مسير برنامه ام مي گذارم و براي هر عكس به نام خودش در بانك اطلاعاتي يك كليد تعريف مي كنم"اگر نام عكس با نام كليد يكي باشد كه چه بهتر : مثلا براي برنامه هاي پرسنلي كد پرسنلي شخص، نام عكسش هم مي باشد " براي لود كردن در اكتيو ريپورت هم يك كنترل IMAGE بر روي گزارش مي گذارم و حال با توجه به اينكه اين كنترل در كدام يونيت گزارش مي باشد كد زير را براي آن مي گذارم:

Image1.Picture = LoadPicture(App.Path + "\pic\" + Field?.DataValue)
فيلد؟ حاوي نام ركوردي مي باشد كه در بانك اطلاعاتي به نام آن عكس ثبت كرده ايم:مثلا hrj1981.jpg

maryamb
یک شنبه 20 مرداد 1387, 16:32 عصر
حالا اگه عکس هام تو بانک اطلاعاتی ذخیره شده بودن چی ؟
کسی نمی خواد راهنمایی کنه؟

maryamb
دوشنبه 21 مرداد 1387, 12:14 عصر
:افسرده::ناراحت:هیچکی جوابمو نداد

ASKaffash
دوشنبه 21 مرداد 1387, 17:19 عصر
سلام
در مثالهای اکتیو ریپورت هست مثل یک فیلد معمولی به یک جدول و یک فیلد عکس میتوانید یک Image را متصل کنید.

fidnah
چهارشنبه 23 مرداد 1387, 07:40 صبح
منظورتون از اينكه براي هر عكس يه كليد تعريف بشه چي؟
من توي برنامم نام عكسو توي يه فيلد ذخيره ميكنم اما زمان لود كردن پيغامpath not foundميده بايد كد خاصي به عكس بدم
ممنون ميشم اگه فوري جوابمو بدين

mahmood3d
چهارشنبه 23 مرداد 1387, 09:53 صبح
بابا چرا توي اين سايت نحوه ذخيره كردن تصوير توي پايگاه داده رو توضيح نمي دين ؟
من هر جاي اين سايت رفتم فقط نحوه ذخيره كردن آدرس عكس رو توضيح دادين و قراره مثل اين تاپيك نحوه ذخيره كردن تصوير تو پايگاه داده رو توضيح بدن ولي هنوز هم خبري نيست .

maryamb
چهارشنبه 23 مرداد 1387, 10:27 صبح
من عكس هاي خودم را در خود بانك اطلاعاتي نمي گذارم :چون هم حجم بانك اطلاعاتي خيلي بالا ميره و هم يكسري مشكلات بعدي را در پي داره .براي اين كار عكسهاي خودم را در يك فولدر در مسير برنامه ام مي گذارم و براي هر عكس به نام خودش در بانك اطلاعاتي يك كليد تعريف مي كنم"اگر نام عكس با نام كليد يكي باشد كه چه بهتر : مثلا براي برنامه هاي پرسنلي كد پرسنلي شخص، نام عكسش هم مي باشد " براي لود كردن در اكتيو ريپورت هم يك كنترل IMAGE بر روي گزارش مي گذارم و حال با توجه به اينكه اين كنترل در كدام يونيت گزارش مي باشد كد زير را براي آن مي گذارم:
کد:
Image1.Picture = LoadPicture(App.Path + "\pic\" + Field?.DataValue)
فيلد؟ حاوي نام ركوردي مي باشد كه در بانك اطلاعاتي به نام آن عكس ثبت كرده ايم:مثلا hrj1981.jpg

میشه یه نمونه برنامه کوچیک بزارین؟
ممنون میشم

hrj1981
چهارشنبه 23 مرداد 1387, 11:33 صبح
اينم نمونه سورس

maryamb
چهارشنبه 23 مرداد 1387, 12:18 عصر
ممنون . ببخشید او کنترلی که بغل عکستون بود همون کنترلی هست که من دنبالش بودم و یه تاپیک هم بخاطرش باز کردم ، می شه بپرسم اونو از کجا می تونم بیارم ؟؟

maryamb
چهارشنبه 23 مرداد 1387, 12:52 عصر
دکمه های سمت راست ( پنل سمت راست)
یه نگاهی به این تاپیک بندازین
http://barnamenevis.org/forum/showthread.php?t=117489

mahmood3d
چهارشنبه 23 مرداد 1387, 21:08 عصر
آقا يكي هم به داد ما برسه و نحوه ذخيره كردن عكس تو پايگاه داده رو بگه

فاطمه وطن دوست
چهارشنبه 23 مرداد 1387, 23:45 عصر
آقا يكي هم به داد ما برسه و نحوه ذخيره كردن عكس تو پايگاه داده رو بگه

سلام

اینو ببینید.
http://barnamenevis.org/forum/showpost.php?p=236061&postcount=42

در ضمن از تجربیات دوستان هم استفاده کنین ، وقتی میگن ذخیره عکس تو دیتابیس کار درستی نیست حتما یه چیزی میدونن که میگن دیگه . :لبخند:

هر روز بهتر از دیروز √ http://www.forum.p30world.com/images/New-smile/N_aggressive%20(42).gif

موفق باشید.

mahmood3d
پنج شنبه 24 مرداد 1387, 09:48 صبح
در ضمن از تجربیات دوستان هم استفاده کنین ، وقتی میگن ذخیره عکس تو دیتابیس کار درستی نیست حتما یه چیزی میدونن که میگن دیگه .


من مي دونم كه ذخيره كردن عكس تو ديتا بيس باعث مي شه حجم ديتا بيس زياد بشه ولي كنترلش خيلي راحت ميشه و چون تصاوير در داخل ديتا بيسه مشكلي از بابت پاك شدن يكي از عكس ها و يا اينكه تغيير نامشون پيش نمياد

hrj1981
پنج شنبه 24 مرداد 1387, 13:10 عصر
دوست عزيز mahmood3d اتفاقا برعكس قضيه گفته شما صادق است.
1-مشكل سرچ در ديتابيسهاي حاوي عكس فوق العاده وحشتناك است.
2-ضريب از دست دادن اطلاعات در اين گونه بانكها خيلي بالاتر است.
3-پشتيبان گيري از اين گونه بانكها دردسر ساز مي باشد.
4....
گفته هاي بالا حاصل يك تجربه بسيار بد براي من مي باشد ، حال خود داني!

HjSoft
شنبه 26 مرداد 1387, 14:33 عصر
دوستان چه جوري داخل يك جدول Vsflex يك عكس نشون بديم ، يه عكس كوچك مثل يك فلش جهت و اونو در گزارش ببينيم در ضمن چه نوع گزارشگيري اين قابليت رو داره ممنونم

ASKaffash
شنبه 26 مرداد 1387, 17:32 عصر
بابا چرا توي اين سايت نحوه ذخيره كردن تصوير توي پايگاه داده رو توضيح نمي دين ؟
من هر جاي اين سايت رفتم فقط نحوه ذخيره كردن آدرس عكس رو توضيح دادين و قراره مثل اين تاپيك نحوه ذخيره كردن تصوير تو پايگاه داده رو توضيح بدن ولي هنوز هم خبري نيست .
سلام
چند ماه قبل گذاشتم دوباره دو تابع خواندن ونوشتن هر فایلی رو در بانک قرار میدهم :


Public Function Binary2SQL(ByVal YourFileName As String, ByRef YourRecordSet As Recordset, ByVal YourFieldName As Variant) As Boolean
Dim FH As Integer, FL As Long, ChunkSize As Integer, Chunks As Integer
Dim Fragment As Integer, Chunk() As Byte, i As Integer
ChunkSize = 16384
FH = FreeFile()
On Error GoTo NoBinary2SQL
Open YourFileName For Binary Access Read As #FH
FL = LOF(FH)
If FL <> 0 Then
Do While FL Mod ChunkSize = 0
ChunkSize = ChunkSize - 1
Loop
Chunks = FL \ ChunkSize
Fragment = FL Mod ChunkSize
YourRecordSet.Fields(YourFieldName).AppendChunk Null
ReDim Chunk(Fragment)
Get FH, , Chunk()
YourRecordSet.Fields(YourFieldName).AppendChunk Chunk()
ReDim Chunk(ChunkSize)
For i = 1 To Chunks
Get FH, , Chunk()
YourRecordSet.Fields(YourFieldName).AppendChunk Chunk()
Next
YourRecordSet.Update
Binary2SQL = True
End If
Close FH
NoBinary2SQL:
End Function
Public Function SQL2Binary(ByRef YourRecordSet As Recordset, ByVal YourFieldName As Variant, ByVal YourFileName As String) As Boolean
Dim FH As Integer, FL As Long, ChunkSize As Integer, Chunks As Integer
Dim Fragment As Integer, Chunk() As Byte, i As Integer
ChunkSize = 16384
FH = FreeFile()
On Error GoTo NoSQL2Binary
Open YourFileName For Binary Access Write As #FH
FL = YourRecordSet.Fields(YourFieldName).ActualSize
Do While FL Mod ChunkSize = 0
ChunkSize = ChunkSize - 1
Loop
Chunks = FL \ ChunkSize
Fragment = FL Mod ChunkSize
ReDim Chunk(Fragment)
Chunk() = YourRecordSet.Fields(YourFieldName).GetChunk(Fragm ent)
Put FH, , Chunk()
ReDim Chunk(ChunkSize)
For i = 1 To Chunks
Chunk() = YourRecordSet.Fields(YourFieldName).GetChunk(Chunk Size)
Put FH, , Chunk()
Next
Close FH
SQL2Binary = True
NoSQL2Binary:
End Function