PDA

View Full Version : مشکل وحشتناک با vsflexgrid



mostafa_bahar
پنج شنبه 19 بهمن 1391, 21:00 عصر
دوستان برنامه ای نوشتم که در چند فروشگاه نصبه مشکلم بزرگی برام ایجاد شده راهنمایی فرمائید
من صفحهای در برنامه دارم که داخل textbox هر چی تایپ کنه بانک filter می شه و بر اساس آن vs اطلاعات را نشان می دهد
مشکل: در روز شاید چند بار نرم افزار هنگ می کنه جالب اینه که در text تایپ انجام می شه ولی جدول خالی دیده میشه و هیچ اتفاقی نمی افته و بعد برنامه هم بسته نمی شه بعد dont send می آید حالا جالب اینه که من cpu usage رو هم چک کردم ولی مشخص که تو حلقه نیست آیا vsflex باگی دارد

SlowCode
پنج شنبه 19 بهمن 1391, 23:40 عصر
سلام
واسه ما تا حالا همچین اتفاقی نیافتاده.مطمئنی که مصرق cpu ار برنامه خودته؟
اگه مطمئنی پس برنامه رو در حالت دیباگ اجرا کن احتمالا تو یه حلقه گیر میکنه. اگه درست نشد کدهایی رو که اجرا میشن رو بزار اینجا تا نگاه کنیم.

Hashemvp
جمعه 20 بهمن 1391, 04:52 صبح
سلام
خیلی چیزا توی این مشکل دخیل هستن
مثلا نوع نوشتاری دستور
کد هایی ک برای فیلتر و ارتباط این کامپونت نوشتی
و مهم تر از همه ک 90 درصد فکر میکنم این کارو کردی برنامه ات رو پک کردی و احتمال این وجود داره ک اون پکر نرم افزارتو خراب کرده باشه

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

موفق باشی

rbagherih
جمعه 20 بهمن 1391, 09:46 صبح
سورس اون قسمت را برام بفرست تا ببینم
rbagherih63@chmail.ir

mostafa_bahar
جمعه 20 بهمن 1391, 11:23 صبح
ببینید این مشکل روی حروف مشخصی بوجود نمی آید تصادفی است اون قسمت از برنامه رو
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
On Error Resume Next
Err.Clear
If Text1.Text = "" Then
If englan = 0 Then
DataEnvironment1.rsCommand1.Filter = "name <> ''"
Else
DataEnvironment1.rsCommand1.Filter = "nameen <> ''"
End If
GoTo l
End If
c = 0

If IsNumeric(Right(Text1.Text, 1)) Then
For i = 1 To Len(Text1.Text)
If IsNumeric(Mid(Text1.Text, i, 1)) Then
c = i
GoTo l1
End If
Next i
End If
l1:
If Val(Text1.Text) <> 0 Then
If Mid(Text1.Text, 1, 1) = "0" Then
DataEnvironment1.rsCommand1.Filter = "code like '" + Text1.Text + "%'"
DataEnvironment1.rsCommand1.Sort = "code"

Else
DataEnvironment1.rsCommand1.Filter = "mablagh like '" + Text1.Text + "%'"
DataEnvironment1.rsCommand1.Sort = "mablagh"
End If
GoTo l
Else
If Mid(Text1.Text, 1, 1) = "0" Then
DataEnvironment1.rsCommand1.Filter = "code like '" + Text1.Text + "%'"
DataEnvironment1.rsCommand1.Sort = "code"
End If

End If
c1 = ""
c2 = ""
fil = ""
If c <> 0 Then
c1 = Mid(Text1.Text, c, Len(Text1.Text))
c2 = Left(Text1.Text, c - 1)
If englan = 0 Then
fil = " or (name like '" + c2 + "%' and mablagh like '" + c1 + "%')"
Else
fil = " or (nameen like '" + c2 + "%' and mablagh like '" + c1 + "%')"
End If

If englan = 0 Then
DataEnvironment1.rsCommand1.Filter = "(name like '" + Text1.Text + "%')" + fil
DataEnvironment1.rsCommand1.Sort = "name"
Else
DataEnvironment1.rsCommand1.Filter = "(nameen like '" + Text1.Text + "%')" + fil
DataEnvironment1.rsCommand1.Sort = "nameen"
End If
Else
If englan = 0 Then
DataEnvironment1.rsCommand1.Filter = "name like '" + Text1.Text + "%'"
DataEnvironment1.rsCommand1.Sort = "name"
Else
DataEnvironment1.rsCommand1.Filter = "nameen like '" + Text1.Text + "%'"
DataEnvironment1.rsCommand1.Sort = "nameen"
End If
End If
l:
VSFlexGrid1.Col = 0
'VSFlexGrid1.LoadArray DataEnvironment1.rsCommand1.GetRows
VSFlexGrid1.DataRefresh
ببینید این کد داخل keyup است و مورد بعدی اینکه من در form active دیتا سورس vs ست کردم

m2011kh
جمعه 20 بهمن 1391, 11:49 صبح
On Error Resume Next رو از کد هات بردار ببین از کدوم خط دونت سند میگیره.

ببخشید فرصت نداشتم کد ها رو بررسی کنم.

mostafa_bahar
جمعه 20 بهمن 1391, 13:15 عصر
این کارو قبلا کردم ولی بازم مشکل حل نشده جالب این که روی ویندوز 7 این اتفاق نمی افته

Hashemvp
جمعه 20 بهمن 1391, 15:25 عصر
دوست عزیز از دستور Doevents استفاده کن
بین کدهایی ک میدونی ممکنه ب پایان رسیدن کارشون زیاد طول بکشه این کد رو بذار ک جلوگیزی بشه از هنگ کردنش
موفق باشی

mostafa_bahar
جمعه 20 بهمن 1391, 17:45 عصر
عزیز هنگ می کنه و می یاد بیرون نه اینکه دیر جواب می ده که از doevents استفاده کنم

Hashemvp
شنبه 21 بهمن 1391, 05:42 صبح
عزیز خوب یکی از علت های هنگ کردن اینکه دستورات و عملیات های زیادی رو به سی پی یو میفرسته ک باعث میشه سی پی یو دیرتر جواب بده و سیستم عامل هم فکر میکنه برنامه ایراد داره و میبندتش

موفق باشی

m.4.r.m
شنبه 21 بهمن 1391, 11:06 صبح
ـخه واقعا برای یک عمل جست و جو و فیلتر کردن به این همه کد نیاز داریم ؟ با چند خط کوچیک میتونی جست و جو رو انجام بدی و راحت تر مشکل خودتو حل کنی چرا این همه دستور نوشتی ؟