# پایگاه‌های داده > سایر پایگاه‌های داده > Access >  tree view در اکسس

## sarami

ظاهرا تا بحال کسی درمورد tree view در اکسس صحبتی نکرده شاید این نمونه شروع خوبی برای استفاده دوستان باشه.

----------


## انگوران

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

----------


## سنبله کار

ضمن تشکر از جانب صارمی عزیز پیشنهاد می کنم نمونه ای که بر اساس جدول تنظیم میشه بگذارید .

----------


## mohammadgij

اینم یه فایل که از جدول خونده میشه اگه ایراد داره بذارید پای نا بلدی من

----------


## انگوران

ضمن تشکر - اگه امکان داره طریقه ساختشو یه مقدار توضیح بدین

----------


## mohammadgij

سلام
چشم من توضیح میدم اما مثل شما دوستان نمی تونم فنی صحبت کنم چون مطالعاتم کمه.
اول بگم که من از یک جدول استفاده کردم و این ساختارم هم به این دلیل هستش. میشه از چند جدول استفاده کرد و ساختارتون(نمیدونم بهنر یا بدتر) رو عوض کنید
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

برنامه ای که جناب mohammadgij گذاشته اند اجرا نمیشود  کتابخانه مورد استفاده پیدا نمیکند

----------


## Fazaeli

*جزوه آموزشی کار با کنترل TreeView*

----------


## user2535

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

----------


## مهدی قربانی

سلام
این لینک رو ببین

https://barnamenevis.org/showth...highlight=tree

----------


## kourosh_ag

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

----------


## ata.royalfalcon

سلام
من آموزش آقای Fazaeli را دانلود و مطالعه کردم و توانستم یک tree view درست کنم که هیچ اشکالی نداشت .
اما من میخواهم وقتی روی هر عنوان در هرشاخه دابل کلیک میکنم نام و کد آن در جای دیگری از یک تیبل ذخیره شود 
یعنی نیازی نباشد که در هر رکورد جدید آن عنوان را مجددا تایپ کنم 
البته این هم بگم که طریقه استفاده از Lookup wizard و ایجاد منوی پایین آمدنی رامیدانم 
اما این tree view باحالتره

----------


## ata.royalfalcon

کسی نیستند ، جواب مارا بدهند

----------


## ata.royalfalcon

سلام به همگی 
این نمونه فایل اکسس را یه نگاهی بندازید ممنون میشم

----------


## saeed razaee

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

----------


## saeed razaee

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

----------


## saeed razaee

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

----------


## saeed razaee

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

----------


## saeed razaee

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

----------


## Profesorjd

با سلام 
ضمن تشکر از تمامی اساتید . آیا راهی دارد ترسیم این نمودار درختی بصورت افقی هم  بشود .؟ (همزمان با گسترش درختی عمودی آن ) با نمونه باشد بهتر است

----------


## Profesorjd

با سلام
اساتید گرامی واقعاً سئوال سختیه و راهنمایی نداره ؟!
لطفا راهنمایی فرمایید راه اول رو رفتم توضیحات خطی هم مورد نیاز است

----------


## Profesorjd

سلام 
برای آخرین بار !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

----------


## Profesorjd

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

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

----------


## smderfan

یک نمونه از تری ویویی که سه جدول با هم  رابطه دارند هم قرار بدید.
با تشکر

----------


## davood-ahmadi

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

----------


## HAMRAHSOFT.IR

اين برنامه را ميشه در اكسس پرجكت اجرا كرد يا خير كسي نمونه در اين رابط داره

----------


## shaghaghi

> اين برنامه را ميشه در اكسس پرجكت اجرا كرد يا خير كسي نمونه در اين رابط داره


سلام
منظورتان از کلمه ی* این برنامه* نمونه برنامه دوستمان آقای احمدی است که قبل از نوشته ی شما می باشد یا بطور کلی می خواهید امکان استفاده از treeview را در اکسس پروجکت بدانید؟

----------


## HAMRAHSOFT.IR

> سلام
> منظورتان از کلمه ی* این برنامه* نمونه برنامه دوستمان آقای احمدی است که قبل از نوشته ی شما می باشد یا بطور کلی می خواهید امکان استفاده از treeview را در اکسس پروجکت بدانید؟



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

----------


## davood-ahmadi

بله این امکان هست که در اکسس پروجکت کار بکنه . البته الان وقت نداشتم که کاملش کنم. ولی نسبت به مثالهای قبلی شما می تونید خودتون آنرا بنویسید.

----------


## shaghaghi

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


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

----------


## HAMRAHSOFT.IR

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


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

----------


## davood-ahmadi

اینم یک نمونه بدون کار با اطلاعات.

----------


## F_ashigh

با سلام
آيا ممكنه كه Tree View را از راست به چپ داشته باشيم ؟

----------


## shaghaghi

> با سلام
> آيا ممكنه كه 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 بصورت صحیح به نمایش در بیاید.

----------


## سعیدمرزبان

> ظاهرا تا بحال کسی درمورد tree view در اکسس صحبتی نکرده شاید این نمونه شروع خوبی برای استفاده دوستان باشه.


..................................................  ..................................................  .............

----------


## mohammadgij

دوستان عزيز فايلي كه در صفحه يك   Upload كردم رو تست كردم كار ميكنه. اما به يك OCX نياز داره كه بايد در Reference ها ادد بشه اسم اونم اينه MSCOMCTL.OCX
اگر كار ادد نكنيد از تعريف Node اشكال ميگيره

----------


## mo_r_mosavi

مطلب جديدي بود تشکر

----------


## سعیدمرزبان

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

----------


## stabesh

با سلام
مثالی برای treeview راست چین

----------


## shahab_ss

سلام،
یک FlatTable داریم با فیلد های زیر :
Id
Desc
ParentId

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

متشکرم

----------

