PDA

View Full Version : اتصال چک باکس treeview به دیتابیس



ali190
چهارشنبه 01 دی 1389, 20:51 عصر
با سلام و عرض خسته نباشید
در فایل پیوستی ی کنمونه نمودار شاخه درخت قرار دادم که خاصیت چک باکسش فعال شده
من در بانکم در جدول مربوطه یک فیلد boolean با نام check ساختم
میخواستم از دوستان خواهش کنم تا کمکم کنند تا چک باکس نمودار شاخه درخت رو به این فیلد وصل کنم
زمانیکه یک گره رو میخواهیم از طریق کنویسی ایجاد کنیم یک سری پارمترها ر براش ست میکنیم (مثل گره پدر ، نام گره ، کلید گره ، عکس انتخاب ، عکس اگره هنگام کلیک شدن)


63964


پارامتر چک باکس در این این پارامترها که باید برای تعیین چک باکس اونها رو ست کرد وجود نداره
من در واقع میخوام با این کار این چک باکسها رو در treeview ام حافظه دار کنم ، چون در حالت معمولی زمانیکه شما تیک یک گره رو میزندی و هنگامی که فرم رو میبندید و دوباره بازش میکنید دیگه تیک چک باکس اون گره فعال نیست ، ولی زمانیکه به دیتابیس متصل بشه اون تیک چک باکس در دیتابیس میمونه و هنگام لود شدن treeview از دیتابیس خونده میشه و درش ست میشه
ممنون میشم راهنمایییم کنید
یاعلی

vbhamed
پنج شنبه 02 دی 1389, 09:31 صبح
سلام

راهش اينطوريه :


Dim tvw As Node

Set tvw = TreeView1.Nodes.Add(, , , "test")
tvw.Checked = True

ali190
پنج شنبه 02 دی 1389, 14:58 عصر
باسلام
ممنون از راهنمایی شما جناب vbhaemd عزیز
در برنامه من SUB زیر مسئول Load نمودن گره ها در نمودار است:


Private Sub local_fillTreeView()
Dim sqlQry As String
Dim xNode As Node
Dim xRsTemp1 As New ADODB.Recordset
Dim xParent As String
trV.Nodes.Clear
Set xNode = trV.Nodes.Add(, , "a", "Main Root", 2)
xNode.Expanded = True
sqlQry = ""
sqlQry = "select * from tblNodes order by nodeLevel, nodeText asc"
xRsTemp1.Open sqlQry, xConStr, adOpenDynamic, adLockOptimistic
With xRsTemp1
If Not .BOF Or Not .EOF Then
Do While Not .EOF
xParent = .Fields("childOf")
Set xNode = trV.Nodes.Add(xParent, tvwChild, .Fields("nodeId"), .Fields("nodeText"), 1)
xNode.Checked = .Fields("check").Value
.MoveNext
Loop
End If
.Close
End With
For Each xNode In trV.Nodes
If xNode.Children = 0 Then
xNode.Image = 3
End If
Next
End Sub

در روال بالا من با راهنمایی شما قسمت قرمز رنگ رو اضافه نمودم ، یعنی دستور:

xNode.Checked = .Fields("check").Value]

زمانیکه میخوام این تیک هارو در بانکم ثبت کنم هم از رویداد trV_NodeCheck استفاده میکنم.
ولی متاسفانه این دستورعمل نمیکنه
ممنون میشم راهنمایی بفرمائید
ممنون و متشکر از لطف شما
یاعلی

vbhamed
پنج شنبه 02 دی 1389, 23:11 عصر
سلام

پروژه رو ضميمه كنيد

ali190
جمعه 03 دی 1389, 10:27 صبح
باسلام
کد رو به پروژه اضافه نمودم
در بانک اکسس هم در فیلد check چند ردیف رو برای تست تیک زدم
پروژه رو خدمتتون قرار میدم
ممنون و متشکر از لطف شما
یاعلی

vbhamed
جمعه 03 دی 1389, 23:02 عصر
سلام

تو اين پروژه شما كه نه trV_NodeCheck وجود داره نه روالي براي ثبت كردن تغييرات

ali190
شنبه 04 دی 1389, 19:27 عصر
سلام

تو اين پروژه شما كه نه trV_NodeCheck وجود داره نه روالي براي ثبت كردن تغييرات
حق باشماست جناب vbhamed عزیز
ولی من هدفم اینه که تیکهایی که برای بعضی از گره ها در بانکم زدم ، هنگام بالا اومدن فرم در treeview نمایان بشه
در ساب() local_fillTreeViewبعضی از پارامترهای treeview از طریق دیتابیس مقدار دهی میشوند ، من میخوام یکی از اون پارامترها chekbox این نمودار باشه
زمانیکه بخوام تیک گره ها رو بزنم از طریق متد رکوردست (edit) این کار رو برای هر گره منحصر به فرد انجامش میدم
الان مشکل اصلیم فقط خوندن تیک این گره ها هنگام load شدن نمودارم از دیتابیس هست


If Not .BOF Or Not .EOF Then
Do While Not .EOF
xParent = .Fields("childOf")
Set xNode = trV.Nodes.Add(xParent, tvwChild, .Fields("nodeId"), .Fields("nodeText"), 1)
xNode.Checked = .Fields("check").Value
.MoveNext
Loop
End If

در واقع کد قرمز رنگ رو برای همین قضیه اضافه کردم ، تا اطلاعات چک باکس رو از فیلد check از روی دیتابیس بخونه و بریزه تو نمودار شاخه درخت
امیدوارم منظورم رو رسونده باشم
ممنون و متشکر از لطف شما

vbhamed
دوشنبه 06 دی 1389, 09:29 صبح
سلام

به شكل زير بنويسيد تست كنيد


xNode.Checked = iif(val(.Fields("check").Value & ""), True, False)

ali190
دوشنبه 06 دی 1389, 18:10 عصر
سلام

به شكل زير بنويسيد تست كنيد


xNode.Checked = iif(val(.Fields("check").Value & ""), True, False)
سلام جناب vbhamed عزیز
ممنون از راهنماییتون
کد رو تست کردم ، متاسفانه جواب نداد
آیا راه دیگه ای وجود داره؟
ممنون و متشکر از لطف شما
یاعلی

ali190
چهارشنبه 08 دی 1389, 23:26 عصر
سلام
هیچ راهی برای انجام اینکار وجود نداره؟

vbhamed
جمعه 10 دی 1389, 23:24 عصر
سلام

نمونه پروژه تون كه اين دستور رو توش نوشتين بزارين تا بررسي بشه

ali190
شنبه 11 دی 1389, 19:50 عصر
سلام
جناب vbhamed این نمونه خدمت شما
ممنون و مشتکر
یاعلی

vbhamed
دوشنبه 13 دی 1389, 02:14 صبح
سلام

اينم صحيحش : :چشمک:

چینی ساز
دوشنبه 13 دی 1389, 09:16 صبح
جناب vbhamed ب ما هم سر بزنین خیلی وقت منتظر جوابتون هستم
http://barnamenevis.org/showthread.php?258492-در-خواست-از-اساتیدی-که-در-زمینه-ارتباط-با-سخت-افزار-اطلاعات-دارن