ورود

View Full Version : tree view در اکسس



sarami
یک شنبه 12 شهریور 1385, 21:44 عصر
ظاهرا تا بحال کسی درمورد tree view در اکسس صحبتی نکرده شاید این نمونه شروع خوبی برای استفاده دوستان باشه.

انگوران
دوشنبه 13 شهریور 1385, 09:36 صبح
ممنونم آقای سارمی - خیلی وقت بود تو ذهنم بود چطور می شه تو یه سازمان ، معاونت ، مدیریت ، اداره و ... بصورت درختی نمایش داده بشه ( وقتی رو معاونت کلیک می کنیم مدیریت مربوطه و وقتی رو مدیریت کلیک می کنیم اداره مربوطه و ... نمایش داده بشه) . حالا که لطف کردین فایل نمونه رو پیوست کردین اگه زحمتی نیست یه همچین جدولی با فرم مربوطه بسازین و برای من و دوستان علاقه مند ارسال نمائید .
البته طریقه ساخت فرم پیوست رو هم متوجه نشدم لطفاً مختصر توضیح بدین .

سنبله کار
دوشنبه 13 شهریور 1385, 09:59 صبح
ضمن تشکر از جانب صارمی عزیز پیشنهاد می کنم نمونه ای که بر اساس جدول تنظیم میشه بگذارید .

mohammadgij
سه شنبه 14 شهریور 1385, 17:12 عصر
اینم یه فایل که از جدول خونده میشه اگه ایراد داره بذارید پای نا بلدی من

انگوران
سه شنبه 14 شهریور 1385, 17:19 عصر
ضمن تشکر - اگه امکان داره طریقه ساختشو یه مقدار توضیح بدین

mohammadgij
سه شنبه 14 شهریور 1385, 18:05 عصر
سلام
چشم من توضیح میدم اما مثل شما دوستان نمی تونم فنی صحبت کنم چون مطالعاتم کمه.
اول بگم که من از یک جدول استفاده کردم و این ساختارم هم به این دلیل هستش. میشه از چند جدول استفاده کرد و ساختارتون(نمیدونم بهنر یا بدتر) رو عوض کنید
1) ساختار جدول
ببین دوست من ، اگر نگاه به جدول بکنی میبینی که من یه فیلد دارم به نام bintTakhsisCode که در حقیقت یه AutoNomber بود (آخه از SQL) کپی کردم. به ازای هر رکورد یه کد اختصاص داده شده.
یک فیلد دیگه وجود داره به نام intTakhsisValue که نشون دهنده سطح رکورد مثلا سطح اول که همون "تخصیص نقدینگی" با کد 0 ذخیره شده و سطح دوم به طور مثال "تخصیص مستقیم" با کد 1 و ...........
فیلد سوم هم bintParentTakhsisCode که مقدار پدر هر رکورد از فیلد bintTakhsisCode مربوط به پدر خوانده شده و در رکورد مذکور در هنگام ایجاد ، ذخیره میشه.
به طور مثال " برق آبی " که زیر مجموعه " تخصیص مستقیم " قرار می گیرد دارای bintParentTakhsisCode برابر با عدد (2) می باشد که اگر به رکورد " تخصیص مستقیم " مراجعه شود و فیلد bintTakhsisCode انرا نگاه کنید خواهید دید که این رکورد همان عدد(2) را داراست.


2)کد فرم:
از دستورات زیر فقط قسمت fnFillTree رو توضیح میدم. سایر دستورات مربوط به فرم من بوده در Adp که استفاده می کردم و اینجا کاربردی ندارند به جز قسمت lonArray که اونم ماله رنگهاست


Dim ctlControls As control
If adorstSelect.State = 1 Then adorstSelect.Close
adorstSelect.Open "Select * From tblTakhsisTree Where nvcYeard='1384'", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
If Not adorstSelect.EOF Then
For Each ctlControls In Me.Controls
If ctlControls.ControlType = acTextBox Or ctlControls.ControlType = acComboBox Or ctlControls.ControlType = acCheckBox Then
ctlControls.Value = ""
End If
Next ctlControls
lonAraye(0) = RGB(0, 0, 0): lonAraye(1) = RGB(0, 0, 255): lonAraye(2) = RGB(0, 125, 0): lonAraye(3) = RGB(255, 0, 0)
lonAraye(4) = RGB(255, 0, 255): lonAraye(5) = RGB(105, 0, 0): lonAraye(6) = RGB(10, 205, 155): lonAraye(7) = RGB(128, 0, 0)
lonAraye(8) = RGB(0, 0, 160): lonAraye(9) = RGB(128, 0, 128): lonAraye(10) = RGB(128, 128, 64): lonAraye(11) = RGB(255, 128, 64)
lonAraye(12) = RGB(0, 128, 64): lonAraye(13) = RGB(0, 128, 255): lonAraye(14) = RGB(255, 128, 192): lonAraye(15) = RGB(255, 128, 192)
intRValue = 20
intGValue = 10
intBValue = 50
'*************** TreeView
Call fnFillTree
'*************** TreeView
End If
If adorstSelect.State = 1 Then adorstSelect.Close



در Function زیر



Function fnFillTree(Optional strPCode As String = "")
Dim intValue As Integer
'On Error Resume Next
If adorstSelectFill.State = 1 Then adorstSelectFill.Close
If strPCode = "" Then
adorstSelectFill.Open "Select * From tblTakhsisTree Where nvcYeard='1384' And bintParentTakhsisCode=" & intValue & " ORDER BY nvcPathTakhsisNo", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
If Not adorstSelectFill.EOF Then
adorstSelectFill.MoveFirst
Do While Not adorstSelectFill.EOF
Set NdTakhsisTree = Me.trectlTakhsisTree.Nodes.Add(, , Trim("A" & Trim(Str(adorstSelectFill!bintTakhsisCode))), "(" & adorstSelectFill!nvcTakhsisNo & ")" & adorstSelectFill!nvcTakhsisTitle, 1)
If intValue <= 15 Then
NdTakhsisTree.ForeColor = lonAraye(intValue)
Else
Call fnLevelColor
NdTakhsisTree.ForeColor = RGB(RValue, GValue, BValue)
End If
adorstSelectFill.MoveNext
Loop
End If
If adorstSelectFill.State = 1 Then adorstSelectFill.Close
Else
Call fnAddNodeTree(strPCode)
End If
If adorstSelectFill.State = 1 Then adorstSelectFill.Close
End Function

strPCode ابتدا و برای بار اول خالی می باشد و در نتیجه فسمت اول دستور if اجرا شده و فقط رکورد " تخصیص نقدینگی" انتخاب شده و بوسیله


Set NdTakhsisTree = Me.trectlTakhsisTree.Nodes.Add(, , Trim("A" & Trim(Str(adorstSelectFill!bintTakhsisCode))), "(" & adorstSelectFill!nvcTakhsisNo & ")" & adorstSelectFill!nvcTakhsisTitle, 1)

رکورد اول به Tree اضافه می شود.


, Trim("A" & Trim(Str(adorstSelectFill!bintTakhsisCode))),

قسمت بالا در هنگام اضافه کردن در حقیقت همان ایجاد Code است یعنی شما به اضای هر رکوردی که در Tree نشان می دهید یک Key ما به ازا خواهید داشت . برای این مورد " تخصیص نقدینگی "دارای کد "A1" است.یعنی A بعلاوه bintTakhsisCode مربوط به رکورد " تخصیص نقدینگی "
و کدهای زیر مربوط به تخصیص رنگ می باشند


If intValue <= 15 Then
NdTakhsisTree.ForeColor = lonAraye(intValue)
Else
Call fnLevelColor
NdTakhsisTree.ForeColor = RGB(RValue, GValue, BValue)
End If

و سطح اول ایجاد میشود.
سپس بر روی هر سطح که DblClick کنید سطح بعدی از جدول انتخاب شده و با توجه به کلید سطح خود و bintParentTakhsisCode در Tree با استفاده از کد


Call fnAddNodeTree(strPCode)

ایجاد میشود.

karmand
پنج شنبه 16 شهریور 1385, 06:36 صبح
برنامه ای که جناب mohammadgij گذاشته اند اجرا نمیشود کتابخانه مورد استفاده پیدا نمیکند

Fazaeli
چهارشنبه 29 شهریور 1385, 07:46 صبح
جزوه آموزشی کار با کنترل TreeView

user2535
شنبه 05 خرداد 1386, 21:26 عصر
از دوستان کسی اگر نمونه برنامه نمایش در ختی فیلد ها جهت نمایش کد و نام یا شرح و ایجاد آن اگر داشته باشد و آپلود نماید متشکرم

مهدی قربانی
شنبه 05 خرداد 1386, 22:41 عصر
سلام
این لینک رو ببین

http://barnamenevis.org/forum/showthread.php?t=51981&highlight=tree

kourosh_ag
شنبه 05 خرداد 1386, 22:59 عصر
سلام
من برنامه ای نوشتم که تو یکی از فرماش اطلاعات رو به صورت درختی نمایش میده. فقط اینکه حجم برنامه زیاده البته امکان فرستادن بانک هم وجود نداره . اگر خواستی بگو که تنها این فرمشو برات بفرستم.

ata.royalfalcon
سه شنبه 10 مهر 1386, 19:55 عصر
سلام
من آموزش آقای Fazaeli (http://barnamenevis.org/forum/member.php?u=13171) را دانلود و مطالعه کردم و توانستم یک tree view درست کنم که هیچ اشکالی نداشت .
اما من میخواهم وقتی روی هر عنوان در هرشاخه دابل کلیک میکنم نام و کد آن در جای دیگری از یک تیبل ذخیره شود
یعنی نیازی نباشد که در هر رکورد جدید آن عنوان را مجددا تایپ کنم
البته این هم بگم که طریقه استفاده از Lookup wizard و ایجاد منوی پایین آمدنی رامیدانم
اما این tree view باحالتره

ata.royalfalcon
پنج شنبه 12 مهر 1386, 11:36 صبح
کسی نیستند ، جواب مارا بدهند

ata.royalfalcon
شنبه 14 مهر 1386, 21:10 عصر
سلام به همگی
این نمونه فایل اکسس را یه نگاهی بندازید ممنون میشم

saeed razaee
یک شنبه 15 مهر 1386, 08:57 صبح
با سلام
از دوستان خواهش می کنم کاربرد نمایش درختی داده را توضیح دهید و در صورت امکان آیا امکان دارد با این روش زیر شاخه را فرم قرار داد و با کلیک بر روی زیر شاخه ها فرم و یا گزارش خاصی را باز نمود . با تشکر

saeed razaee
یک شنبه 15 مهر 1386, 09:00 صبح
با سلام
دوستان عزیز اگر توضیحات را در مورد کاربرد نمایش درختی داده ها بدهید تشکر می شود و در صورت امکان آیا می شود زیر شاخه را وقتی کلیک نمودیم فرم و یا گزارش خاصی باز شود.مجددا تشکر می شود.

saeed razaee
یک شنبه 15 مهر 1386, 09:01 صبح
با سلام
خواهش می کنم دوستان عزیز کاربرد نمایش درختی داده ها را توضیح دهید و آیا امکان دارد زیر شاخه ها را فرم قرار داد و با کلیک بر روی زیر شاخه فرم و یا گزارش خاصی باز شود . با تشکر

saeed razaee
یک شنبه 15 مهر 1386, 09:03 صبح
با سلام
دوستان عزیز خواهش می کنم توضیحاتی در در مورد کاربرد نمایش درختی داده ها بدهید و آیا امکان دارد که زیر شاخه ها را وقتی کلیک می کنیم فرم و یا گزارش خاصی باز شود . با تشکر

saeed razaee
یک شنبه 15 مهر 1386, 15:06 عصر
با سلام
لطفاً کاربرد نمایش درختی داده ها راتوضیح دهید و آیا می توان با کلیک بر روی زیر شاخه ها فرم و یا گزارش خاصی باز شود . با تشکر

Profesorjd
یک شنبه 15 مهر 1386, 17:36 عصر
با سلام
ضمن تشکر از تمامی اساتید . آیا راهی دارد ترسیم این نمودار درختی بصورت افقی هم بشود .؟ (همزمان با گسترش درختی عمودی آن ) با نمونه باشد بهتر است

Profesorjd
سه شنبه 24 مهر 1386, 21:52 عصر
با سلام
اساتید گرامی واقعاً سئوال سختیه و راهنمایی نداره ؟!
لطفا راهنمایی فرمایید راه اول رو رفتم توضیحات خطی هم مورد نیاز است

Profesorjd
پنج شنبه 26 مهر 1386, 19:15 عصر
سلام
برای آخرین بار !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Profesorjd
شنبه 05 آبان 1386, 19:26 عصر
با سلام
ببخشید مجبور شدم برای رسیدن به پاسخ این تاپیک را بیاورم صفحه اول !
آیا جوابی برای بنده یافت نمیشود .
دوباره تکرار میکنم در این آموزش نمودار بصورت درختی و گره های گسترشی میشود ایا راهی وجود دارد که با گسترش این نمودار درختی بطور همزمان ، بصورت خطی هم دید ؟
مثلا :
+ شرکت
- _ _ _ _ مدیر عامل
_ _ _ _ منشی

شرکت -- مدیر عامل -- منشی

smderfan
پنج شنبه 29 فروردین 1387, 23:53 عصر
یک نمونه از تری ویویی که سه جدول با هم رابطه دارند هم قرار بدید.
با تشکر

davood-ahmadi
جمعه 30 فروردین 1387, 09:10 صبح
من این نمونه را خودم درست کردم چون خواستم کارم را راه بندازم کمی شلوغه ، پس ببخشید.
گفتم شاید مفید باشد.

HAMRAHSOFT.IR
دوشنبه 06 خرداد 1387, 08:11 صبح
اين برنامه را ميشه در اكسس پرجكت اجرا كرد يا خير كسي نمونه در اين رابط داره

shaghaghi
دوشنبه 06 خرداد 1387, 08:43 صبح
اين برنامه را ميشه در اكسس پرجكت اجرا كرد يا خير كسي نمونه در اين رابط داره
سلام
منظورتان از کلمه ی این برنامه نمونه برنامه دوستمان آقای احمدی است که قبل از نوشته ی شما می باشد یا بطور کلی می خواهید امکان استفاده از treeview را در اکسس پروجکت بدانید؟

HAMRAHSOFT.IR
دوشنبه 06 خرداد 1387, 08:52 صبح
سلام
منظورتان از کلمه ی این برنامه نمونه برنامه دوستمان آقای احمدی است که قبل از نوشته ی شما می باشد یا بطور کلی می خواهید امکان استفاده از treeview را در اکسس پروجکت بدانید؟


سلام ممنون ازين زود جواب داديد
بطور کلی امکان استفاده از treeview را در اکسس پروجکت وجود داره البته اطلاعات از يك تيبل بخونه مثل نمونه كه دوست خوبمون davood-ahmadi گذاشتن فقط تحت اكس پروچكت باشه

davood-ahmadi
دوشنبه 06 خرداد 1387, 11:19 صبح
بله این امکان هست که در اکسس پروجکت کار بکنه . البته الان وقت نداشتم که کاملش کنم. ولی نسبت به مثالهای قبلی شما می تونید خودتون آنرا بنویسید.

shaghaghi
دوشنبه 06 خرداد 1387, 13:53 عصر
سلام ممنون ازين زود جواب داديد
بطور کلی امکان استفاده از treeview را در اکسس پروجکت وجود داره البته اطلاعات از يك تيبل بخونه مثل نمونه كه دوست خوبمون davood-ahmadi گذاشتن فقط تحت اكس پروچكت باشه
سلام
اگر در زمینه ی کار کردن با این ابزار به تسلط و تجربه ی کافی برسید، قادر به انجام انواع تکنیکها خواهید بود:
بطور کلی برای ایجاد ارتباط با جداول یا پرس و جو ها (چه اکسس معمولی یا اکسس پروجکت) با کمک Recordset و انجام پیمایش بین رکوردها، شاخه ها و زیر شاخه های آنرا می توانید اضافه کنید.
با کمک ImageList امکان تعریف آیکون برای هر شاخه را خواهید داشت
با توابع api می توانید آنرا راست چین نمایید
بجای Chekbox های خود ابزار می توانید از آیکونهای شکیل تر برای علامت "تیک" استفاده کنید
می توانید Treview خود را بصورت آنلاین و لحظه ای با جدول مرتبطش لینک کنید (هر باری که Node ی باز می شود Child های آنرا Remove کنید و بازخوانی کنید)
هر شاخه ای را که دوست داشتید با کمک کد نویسی باز یا بسته کنید، حذف کنید، آیکون آنرا عوض کنید، رنگ نوشته ی متن آنرا تغییر دهید یا بصورت Bold در بیاورید و ...

HAMRAHSOFT.IR
دوشنبه 06 خرداد 1387, 14:29 عصر
سلام
اگر در زمینه ی کار کردن با این ابزار به تسلط و تجربه ی کافی برسید، قادر به انجام انواع تکنیکها خواهید بود:
بطور کلی برای ایجاد ارتباط با جداول یا پرس و جو ها (چه اکسس معمولی یا اکسس پروجکت) با کمک Recordset و انجام پیمایش بین رکوردها، شاخه ها و زیر شاخه های آنرا می توانید اضافه کنید.
با کمک ImageList امکان تعریف آیکون برای هر شاخه را خواهید داشت
با توابع api می توانید آنرا راست چین نمایید
بجای Chekbox های خود ابزار می توانید از آیکونهای شکیل تر برای علامت "تیک" استفاده کنید
می توانید Treview خود را بصورت آنلاین و لحظه ای با جدول مرتبطش لینک کنید (هر باری که Node ی باز می شود Child های آنرا Remove کنید و بازخوانی کنید)
هر شاخه ای را که دوست داشتید با کمک کد نویسی باز یا بسته کنید، حذف کنید، آیکون آنرا عوض کنید، رنگ نوشته ی متن آنرا تغییر دهید یا بصورت Bold در بیاورید و ...

مشه يك نمونه بزاري

davood-ahmadi
سه شنبه 07 خرداد 1387, 10:59 صبح
اینم یک نمونه بدون کار با اطلاعات.

F_ashigh
سه شنبه 07 خرداد 1387, 13:43 عصر
با سلام
آيا ممكنه كه Tree View را از راست به چپ داشته باشيم ؟

shaghaghi
سه شنبه 07 خرداد 1387, 14:38 عصر
با سلام
آيا ممكنه كه Tree View را از راست به چپ داشته باشيم ؟
سلام
این کد را بالای فرم قسمت General وارد کنید



Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Const WS_EX_LAYOUTRTL = &H400000
Private Const GWL_EXSTYLE = -20

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


SetWindowLong TreeView1.hwnd, GWL_EXSTYLE, GetWindowLong(TreeView1.hwnd, GWL_EXSTYLE) Or WS_EX_LAYOUTRTL

با این نوع راست چین کردن آیکون های Treeview وارونه نمایش داده می شوند، برای حل این مشکل، آیکون هایتان را با نرم افزارهای مخصوص آیکون سازی مثل Icon workshop وارونه کنید و به ImageList بدهید تا در Treeview بصورت صحیح به نمایش در بیاید.

سعیدمرزبان
یک شنبه 13 مرداد 1387, 09:41 صبح
ظاهرا تا بحال کسی درمورد tree view در اکسس صحبتی نکرده شاید این نمونه شروع خوبی برای استفاده دوستان باشه.......................................... .................................................. ......................

mohammadgij
یک شنبه 13 مرداد 1387, 09:49 صبح
دوستان عزيز فايلي كه در صفحه يك Upload كردم رو تست كردم كار ميكنه. اما به يك OCX نياز داره كه بايد در Reference ها ادد بشه اسم اونم اينه MSCOMCTL.OCX
اگر كار ادد نكنيد از تعريف Node اشكال ميگيره

mo_r_mosavi
پنج شنبه 17 مرداد 1387, 00:13 صبح
مطلب جديدي بود تشکر

سعیدمرزبان
دوشنبه 11 شهریور 1387, 23:36 عصر
با سلام
تب ریپورت برنامه اکسس من اشکال پیدا کرده و ویزارد آن نیز کار نمی کند و اولین گزینه آن نیز اصلاً کار نمی کند و گزارش هائی را هم که داشتم پاک شده لطفاً اگر از دوستان کسی به این مشکل برخورد کرده روش حل آنرا بفرمائید با حذف آفیس و نصب مجدد نیز مشکل برطرف نمی شود (نیاز بسیار فوری) با تشکر فراوان

stabesh
یک شنبه 24 بهمن 1389, 21:12 عصر
با سلام
مثالی برای treeview راست چین

shahab_ss
پنج شنبه 03 آذر 1390, 19:17 عصر
سلام،
یک FlatTable داریم با فیلد های زیر :
Id
Desc
ParentId

که یک اطلاعات یک درخت رو در این جدول ذخیره میکنیم.
چطوری میشه اطلاعات این جدول رو (که یک درخت بصورت n لایه ای هست) در یک گزارش نمایش داد ؟!

متشکرم