PDA

View Full Version : توزيع اطلاعات رديف ها در تكست باكس ها



babak555
دوشنبه 18 آبان 1394, 11:18 صبح
سلام
من ميخوام براي اينكه اطلاعات مثلا 100 ركورد تك ستوني را كنار هم ودر 100 تكست باكس همزمان كپي كنم و نشان دهم و نيز در گزارش گيري هم در يك صفحه قرار بدهم نياز دارم در يك حلقه for next بجاي قسمت عددي نام تكست باكس مثلا (Text1) تا (Text100) يك متغيير مانند (Text(var قرار بدم تابصورت اتوماتيك تمام تكست باكس ها پر بشه .
هدف نهايي من تغيير چيدمان ركورد هاي يك فرم از حالت ستوني به حالت چند رديفي در گزارش گيري بدون استفاده از پرينت چند ستوني در گزارش گيري است .مثل
12
44
66
44
33
88
88
45
كه بصورت
12 44 66 44
33 88 88 45
پرينت بشه
از آنجائيكه نصف قسمت بالاي گزارش A4 من يك فرم ديگر و يك ستوني است نميتونم در نصف پايين صفحه A4 از پرينت چند ستوني استفاده كنم.
لطفا از اساتيد كسي ميتونه راهنمايي بفرماييد.
با تشكر

amirzazadeh
سه شنبه 19 آبان 1394, 06:55 صبح
سلام
اگه نمونه خودتون رو اپلود كنيد بهتر ميشه بررسي كرد.

Rasool-GH
سه شنبه 19 آبان 1394, 07:17 صبح
من هم مشتری میشم اگه راهی باشه

babak555
سه شنبه 19 آبان 1394, 19:52 عصر
سلام
اگه نمونه خودتون رو اپلود كنيد بهتر ميشه بررسي كرد.
136629

با تشكر از پاسخ گويي مدير محترم . فايل ضميمه تقريبا آنچه مد نظر است را توضيح ميده .

alirezabahrami
سه شنبه 19 آبان 1394, 22:55 عصر
سلام
من ميخوام براي اينكه اطلاعات مثلا 100 ركورد تك ستوني را كنار هم ودر 100 تكست باكس همزمان كپي كنم و نشان دهم و نيز در گزارش گيري هم در يك صفحه قرار بدهم نياز دارم در يك حلقه for next بجاي قسمت عددي نام تكست باكس مثلا (Text1) تا (Text100) يك متغيير مانند (Text(var قرار بدم تابصورت اتوماتيك تمام تكست باكس ها پر بشه .
هدف نهايي من تغيير چيدمان ركورد هاي يك فرم از حالت ستوني به حالت چند رديفي در گزارش گيري بدون استفاده از پرينت چند ستوني در گزارش گيري است .مثل
12
44
66
44
33
88
88
45
كه بصورت
12 44 66 44
33 88 88 45
پرينت بشه
از آنجائيكه نصف قسمت بالاي گزارش A4 من يك فرم ديگر و يك ستوني است نميتونم در نصف پايين صفحه A4 از پرينت چند ستوني استفاده كنم.
لطفا از اساتيد كسي ميتونه راهنمايي بفرماييد.
با تشكر
سلام
بعنوان نفر آخر ، من هم سعی می کنم یک راهکار ارائه بدهم
البته هنوز امتحان نکردم ولی احتمالاً با استفاده از یک حلقه بتوان اینکار را انجام داد .
یا علی

Rasool-GH
سه شنبه 19 آبان 1394, 23:17 عصر
این موضوع دقیقا نقطه اشکال در بحث نرمال سازی (http://barnamenevis.org/showthread.php?320114-%D9%86%D8%B1%D9%85%D8%A7%D9%84-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87&p=2267361#post2267361) بود که بنده پیگیرش بودم . اگر به لطف دوستان این مهم قابل انجام بشه اون مبحث هم به نتیجه میرسه .

amirzazadeh
چهارشنبه 20 آبان 1394, 18:07 عصر
سلام
با اجازه دوستان عزيزم اين نمونه با استفاده از اين كد آماده شده.اميدوارم قابل استفاده باشه.

Private Sub Command4_Click()
On Error GoTo Err_Command4_Click
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Set db = CurrentDb
Set rs1 = db.OpenRecordset("column")
Set rs2 = db.OpenRecordset("row")
Do Until rs1.EOF
rs2.AddNew
'For N = 1 To 6
rs2!Desc1 = rs1!Desc
rs1.MoveNext
rs2!Desc2 = rs1!Desc
rs1.MoveNext
rs2!Desc3 = rs1!Desc
rs1.MoveNext
rs2!Desc4 = rs1!Desc
rs1.MoveNext
rs2!Desc5 = rs1!Desc
rs1.MoveNext
rs2!Desc6 = rs1!Desc
rs1.MoveNext
rs2.Update
Loop
rs1.Close
rs2.Close
Set rs1 = Nothing
Set rs2 = Nothing
MsgBox "finished successfull!!"
Exit_Command4_Click:
Exit Sub

Err_Command4_Click:
MsgBox Err.Description
Resume Exit_Command4_Click

End Sub
البته من فقط عمليات تبديل از حالت ستوني به رديفي انجام دادم .طراحي گزارش با همكاري شما و ساير دوستان
..................
موفق باشيد

babak555
جمعه 22 آبان 1394, 12:36 عصر
سلام
بسيار ممنونم جناب امير زاده . كاملا همان كدي ميباشد كه دنبالش ميگشتم .
از وقت و زحمتي كه كشيديد نهايت سپاسگزاري را مي نمايم .

babak555
جمعه 22 آبان 1394, 14:13 عصر
سلام
با اجازه دوستان عزيزم اين نمونه با استفاده از اين كد آماده شده.اميدوارم قابل استفاده باشه.

Private Sub Command4_Click()
On Error GoTo Err_Command4_Click
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Set db = CurrentDb
Set rs1 = db.OpenRecordset("column")
Set rs2 = db.OpenRecordset("row")
Do Until rs1.EOF
rs2.AddNew
'For N = 1 To 6
rs2!Desc1 = rs1!Desc
rs1.MoveNext
rs2!Desc2 = rs1!Desc
rs1.MoveNext
rs2!Desc3 = rs1!Desc
rs1.MoveNext
rs2!Desc4 = rs1!Desc
rs1.MoveNext
rs2!Desc5 = rs1!Desc
rs1.MoveNext
rs2!Desc6 = rs1!Desc
rs1.MoveNext
rs2.Update
Loop
rs1.Close
rs2.Close
Set rs1 = Nothing
Set rs2 = Nothing
MsgBox "finished successfull!!"
Exit_Command4_Click:
Exit Sub

Err_Command4_Click:
MsgBox Err.Description
Resume Exit_Command4_Click

End Sub
البته من فقط عمليات تبديل از حالت ستوني به رديفي انجام دادم .طراحي گزارش با همكاري شما و ساير دوستان
..................
موفق باشيد

جسارتا يك سوال : با تعويض نام Column به يك كوئري به نام ColumnQuery با مشكل مواجه ميشوم.ايراد كار از كجاست؟
136713

amirzazadeh
شنبه 23 آبان 1394, 07:16 صبح
سلام
كد رو به اين صورت اصلاح كنيد:


Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
strSQL = "SELECT * FROM column WHERE id>" & Me.Text1
Set rs1 = db.OpenRecordset(strSQL, dbOpenSnapshot)

Set rs2 = db.OpenRecordset("row")

Rasool-GH
شنبه 23 آبان 1394, 17:54 عصر
با تشکر از جناب میرزازاده . برای اشنایی با رکوردست چه منبعی پیشنهاد میکنید ؟

amirzazadeh
شنبه 23 آبان 1394, 18:35 عصر
سلام
بهترين منبع از نظر من msdn شركت ميكروسافت هست:
https://msdn.microsoft.com/en-us/library/office/ff197799.aspx براي dao

https://msdn.microsoft.com/en-us/library/ms681510%28v=vs.85%29.aspx براي ado

آقاي پيروز مهر هم تو اين لينك در چهار قسمت آموزش ado رو توضيح دادند كه مطالعه اون خالي از لطف نيست:
http://npmpro.blogfa.com/category/1/%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-VBA

babak555
شنبه 23 آبان 1394, 23:00 عصر
خيلي ممنونم جناب امير زاده . بسيار سپاسگزارم.
جناب امير زاده يك عرضي داشم خدمتتان . از آنجائيكه مشتري من كارخانه اش جديد الاحداثه و دقيقا نمي دونه چه سيستم حسابداري مناسب وضعيت فعلي اش ميباشد ، تمايل داره بصورت مرحله اي و و تست شده جلو بره .
تخصص اصلي من هم اتوماسيون و برق صنعتي و برنامه نويسي plc وميكرو هستش. لذا از آنجائيكه درخواست مشتري من مبني بر طراحي سيستم مكانيزاسيون مبتني بر باركد براي خط توليد ، لازمه اش استخراج و استفاده از ديتاي باركد پرينت شده روي محصول بود ، من در ابتدا يك برنامه ساده در اكسل و در ادامه با بالا رفتن انتظارات مشتري مجبور به نوشتن يك برنامه اكسس چند فرمي با 5 گزارش شدم كه فعلا با ظاهر شيك و كارايي نسبي رضايت مشتري را جلب كرده ام . اما مطمئنم در طول يكي دو سال بعدي با افزايش درخواست هاي كارخانه ، توانايي ارتقاء حرفه اي و يكپارچه سازي تمام سيستم تحت شبكه ، و موارد امنيت داده ها و غيره از عهده من خارج خواهد بود. چون اصولا تخصص و كار من برنامه نويسي بانك اطلاعات نيست .
از طرف ديگر براي چنين انتظاري شايد اكسس ظرفيت لازم رانداشته باشد .
ميخواستم ببينم زبان حرفه اي چنين كار هاي كدام و چه كساني و يا شركت هايي توانمندي چنين پروژه هايي را دارند؟

amirzazadeh
یک شنبه 24 آبان 1394, 07:14 صبح
سلام
بهتر بود اين سئوال رو در يك تاپيك مجزا مطرح مي كرديد ولي به هر حال نظر شخصي من اين هست كه بانك داده اكسس براي برنامه هاي با تعداد كاربر محدود كارايي و سرعت مناسبي داره و با اكثر زبان هاي برنامه نويسي قابليت ارتباط رو داره(يعني اكسس مخزن داده و اينترفيس هر زبابي كه شما باهاش راحتترين) اما در تعداد كاربر بالا اكسس هم از نظر سرعت و هم از نظر امنيتي كارايي مناسبي نداره و شما بايد از ساير بانك هاي داده نظير SQL يا MYSQL يا حتي اراكل بهره برداري كنيد.از نظر زبان برنامه نويسي هم كه عرض كردم از VB6 و C ++ بگير تا ##C دلفي و QV
......................
موفق باشيد

babak555
سه شنبه 26 آبان 1394, 10:07 صبح
سلام
جناب امير زاده ميخواستم كد صحيح sql كوئري زير در VBA را ، راهنمايي بفرماييد.

SELECT store.ID, store.FactorID, store.Desc, store.Weight, store.DenyerCut
FROM store
WHERE (((store.FactorID)=[Forms]![Factor]![ID]) AND ((store.Desc)<>"") AND ((store.Weight)>"0"))
ORDER BY store.DenyerCut;

البته كد تا And اول جوا ب ميده strSQL = "SELECT * FROM store WHERE FactorID=" & Form_Factor.Controls("ID")

ولي وقتي دو And را لحاظ ميكنم ارور Type Mismache ميده.
strSQL = "SELECT * FROM store WHERE FactorID=" & Form_Factor.Controls("ID") And ("(Desc) <>" & "") And ("(Weight)>" & "0")

Desc و Weight هر دو String هستند.

و در نهايت سورت بر اساس DenyerCut
با تشكر

abas1388
سه شنبه 26 آبان 1394, 11:31 صبح
سلام
جناب امير زاده ميخواستم كد صحيح sql كوئري زير در VBA را ، راهنمايي بفرماييد.

SELECT store.ID, store.FactorID, store.Desc, store.Weight, store.DenyerCut
FROM store
WHERE (((store.FactorID)=[Forms]![Factor]![ID]) AND ((store.Desc)<>"") AND ((store.Weight)>"0"))
ORDER BY store.DenyerCut;

البته كد تا And اول جوا ب ميده strSQL = "SELECT * FROM store WHERE FactorID=" & Form_Factor.Controls("ID")

ولي وقتي دو And را لحاظ ميكنم ارور Type Mismache ميده.
strSQL = "SELECT * FROM store WHERE FactorID=" & Form_Factor.Controls("ID") And ("(Desc) <>" & "") And ("(Weight)>" & "0")

Desc و Weight هر دو String هستند.

و در نهايت سورت بر اساس DenyerCut
با تشكر
سلام جناب babak555 !
فکر کنم هر سوالی دارید می خواهید آن را در این تاپیک بپرسید .
دوست بزرگوار! چرا برای سوالاتی که ارتباطی به عنوان این تاپیک ندارد تاپیک جدید ایجاد نمی کنید ؟
موفق باشید.