PDA

View Full Version : كندي اجراي برنامه



arsalansalar
دوشنبه 03 خرداد 1389, 08:13 صبح
سلام
من يك برنامه اتوماسيون اداري براي كلينيك ها نوشتم كه به صورت شبكه كار مي كند.
بانك هم اكسس هست.
مشكل من اينه كه بعد از مثلا 10 روز برنامهم به شدت كند مي شود و ثبت يك ركورد حدودا 3 دقيقه طول مي كشد.
ركورد هاي بانك الان در حدود 10000 ركورد است.
براي رفع اين مشكل چه پيشنهادي دوستان دارند.

sinaone1
دوشنبه 03 خرداد 1389, 09:29 صبح
دوست عزیز
خداییش کی همچین برنامه ای که تازه شبکه هم هست رو با access طراحی میکنه ؟
آقا برو و بانکت رو Sql کن

arsalansalar
دوشنبه 03 خرداد 1389, 10:43 صبح
من دنبال يك كار تحقيقاتيم و بنا به دلايلي مجبورم از اكسس استفاده كنم.

sinaone1
دوشنبه 03 خرداد 1389, 10:49 صبح
ببین دوست عزیز به هیچ وجه نمیتونی در چنین سطحی از ترنسفر اطلاعات از دیتابیس ضعیف استفاده کنی
تازه زمانی هم که Sql استفاده میکنی باید به چند نکته دقت کنی :
1 : تا میتونی از تراکنش اطلاعات کم کن مثال استفاده از Store procedure
2 : از سرور قوی استفاده کن
3 : اگه تونستی با رو رو چند تا سرور تقسیم کن که هر کدوم یه بخش رو اداره کنند
4 : join کردن جداول رو به کمترین حد برسون .
5 : اگه بازم یادم اومد بهت میگم

mehrdad.gh
دوشنبه 03 خرداد 1389, 11:48 صبح
شما با 10000 رکورد اشکال پیدا کردید وای به حال روزی که بیشتر از این بشه

به نظر من بهترین کار اینه که شما برای هر روز برنامه ریزی کنید که برنامه براتون یه بانک جدید ایجاد کنه و ادرس بانک برنامه عوض بشه

من این کارا با sql کردم ولی مشکل اصلی جایی پیش میاد که میخوای رکورد های روز قبلا ببینید خلی کار سخت میشه ولی چاره ای نیست

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

ACorvinus
دوشنبه 03 خرداد 1389, 11:54 صبح
شما با 10000 رکورد اشکال پیدا کردید وای به حال روزی که بیشتر از این بشه

به نظر من بهترین کار اینه که شما برای هر روز برنامه ریزی کنید که برنامه براتون یه بانک جدید ایجاد کنه و ادرس بانک برنامه عوض بشه

من این کارا با sql کردم ولی مشکل اصلی جایی پیش میاد که میخوای رکورد های روز قبلا ببینید خلی کار سخت میشه ولی چاره ای نیست

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


سلام.

دوست عزیز روشی که پیشنهاد دادین اصلا منطقی نیست.

موفق باشین.

mehrdad.gh
دوشنبه 03 خرداد 1389, 12:07 عصر
شما بهترشا سراغ دارید خوشحال میشم بگید

چون من خودم برای نوشتن یه برنامه همین مشکلا داشتم بعد از یک ماه الافی بهتر از نجستم

ACorvinus
دوشنبه 03 خرداد 1389, 12:22 عصر
توصیه می کنم دوست عزیزمون از SQL به جای Access استفاده کنن ولی حالا که دارن میگن یه پروژه تحقیقاتی هست، من دیگه حرفی واس گفتن ندارم.

ولی اینکه بیایم هر بار با کد یه پایگاه Create کنیم...!!!!

موفق باشین.

arsalansalar
دوشنبه 03 خرداد 1389, 13:09 عصر
اينكه هر روز بانك بسازيم به نظر من هم منطقي نيست.
sql هم همچين آش دهن سوزي نيست براي اين كار.ممكنه سرعتو به بره بالا ولي مشكلات خاص خودشم داره.
دوستان لطف كنند هي پست ندن بگن تبديل كن به sql،اگه راه ديگه اي بلدين لطفا پست بدين.

ACorvinus
دوشنبه 03 خرداد 1389, 15:10 عصر
sql هم همچين آش دهن سوزي نيست براي اين كار.

چی باعث شده اینجوری فکر کنین؟!

MahmoudiNik
دوشنبه 03 خرداد 1389, 18:50 عصر
سلام دوست عزیز
1- لطفا در مورد پروژه بیشتر توضیح بدید
مثلا اینکه برای اتصال به پیگاه از چه روشی استقاده کردید؟!
منظورم اینه که برای شبکه کردن + اینکه جداولتون چطوره و ....
من تو یه برنامه برای بعضی کارها از روش datadapter که میرفتم گریدم خیلی کند میشد!
خب خیلی مسائل در سرعت اثر گزارند

2- استفاده از DBMS ها مربوط به نوع پروژه هستش اگه قراره اطلاعات زیر 1 میلیون بشه خب اکسس خیلی خوبه من پایگاههایی دیدم با 700000 هزار رکورد که با اکسس بودن و هیچ مشکلی هم نداشتن! ( بانک اطلاعات یکی از بخش های حرم امام رضا )

---------
موفق باشید

Open-Source
دوشنبه 03 خرداد 1389, 19:17 عصر
ممکن که کندی برنامه به دلیل طراحی نادرست بانک باشه (به اصطلاح: بانک آنورمالی داشته باشه)؛ وهیچ ربطی به نوع بانک نداشته باشه .
آیا شما دوست عزیز، بانکت رو تا جایی که میشده نرمال کردی یا نه؟.
همونطور که دوستمون در پست بالا گفتند روش های خوندن اطلاعات هم توی سرعت تاثیر داره.
:متفکر:

ashkan209
دوشنبه 03 خرداد 1389, 21:04 عصر
دوست عزیز سلام
کاشکی از ساختار شبکه ات هم میگفتی ، بنا به تجربه خودم همه مسائل زیر میتونه دخیل باشه ، اگه جواب بدین میتونیم مشکل رو آنالیز کنیم
1- شبکه Work group یا Domain ?
2- باس یا استار؟
3- تعداد کلاینتها روی شبکه که Send , Receive میکنند
4- سوئیچ و یا هاب ؟ چند تا ؟
***
5- آیا توی برنامه ات کلیدی یا پروسسی برای حذف رکورد وجود داره یا نه ، منظورم اینه که رکورد Delete شده در روز داری و حدودا چند تا ؟

arsalansalar
سه شنبه 04 خرداد 1389, 08:23 صبح
دوست عزیز سلام
کاشکی از ساختار شبکه ات هم میگفتی ، بنا به تجربه خودم همه مسائل زیر میتونه دخیل باشه ، اگه جواب بدین میتونیم مشکل رو آنالیز کنیم
1- شبکه Work group یا Domain ?
2- باس یا استار؟
3- تعداد کلاینتها روی شبکه که Send , Receive میکنند
4- سوئیچ و یا هاب ؟ چند تا ؟
***
5- آیا توی برنامه ات کلیدی یا پروسسی برای حذف رکورد وجود داره یا نه ، منظورم اینه که رکورد Delete شده در روز داری و حدودا چند تا ؟

ممنون از توجهتون
1-work group
2-استار
3-3 تا كلاينت
4-يك هاب 8 تايي
5-خير
من با اين كد اطلاعات و واكشي مي كنم:


Dim selectSql AsString
selectSql = "Select dat,te,te1,masr,ejaz,notpez,neshtes,masraf from noskh3 where dat = '" & Label5.Text & "' and nabi = '" & Label41.Text & "' and family = '" & Label45.Text & "' and id2 = '" & Label46.Text & "' and mah = '" & C4.Text & "' and sal = '" & C5.Text & "' and radr= '" & Label48.Text & "'"
con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\db.mdb")
cmdSelect = New OleDbCommand(selectSql, con)
con.Open()
dr = cmdSelect.ExecuteReader()
If dr.Read() Then
If dr("dat") Is DBNull.Value Then
Label5.Text = Nothing
Else
Label5.Text = dr("dat")
EndIf
''''''''''''''''''''''''''''''''''''''''''''
If dr("te") Is DBNull.Value Then
TextBox5.Text = Nothing
Else
TextBox5.Text = dr("te")
EndIf
''''''''''''''''''''''''''''''''''''''''''''
If dr("te1") Is DBNull.Value Then
Label74.Text = Nothing
Else
Label74.Text = dr("te1")
EndIf
''''''''''''''''''''''''''''''''''''''''''''
If dr("masr") Is DBNull.Value Then
ComboBox4.Text = Nothing
Else
ComboBox4.Text = dr("masr")
EndIf
''''''''''''''''''''''''''''''''''''''''''''
If dr("ejaz") Is DBNull.Value Then
ComboBox35.Text = Nothing
Else
ComboBox35.Text = dr("ejaz")
EndIf
''''''''''''''''''''''''''''''''''''''''''''
If dr("notpez") Is DBNull.Value Then
Button4.ForeColor = Color.Black
Else
Button4.ForeColor = Color.Red
EndIf
''''''''''''''''''''''''''''''''''''''''''''
Try
If dr("neshtes") Is DBNull.Value Then
Button4.Text = "ë¢"
Else
Button4.Text = "¢«¢"
EndIf
Catch ex As Exception
EndTry
''''''''''''''''''''''''''''''''''''''''''''
If dr("masraf") Is DBNull.Value Then
Else
If dr("masraf") = Label54.Text Then
TextBox5.ReadOnly = True
LinkLabel5.Enabled = True
Else
TextBox5.ReadOnly = False
LinkLabel5.Enabled = False
EndIf
EndIf
''''''''''''''''''''''''''''''''''''''''''''
EndIf
con.Close()
dr.Close()


با اين كد هم add مي كنم:


con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\db.mdb")
Dim strSQL AsString = _
"INSERT INTO noskh3 (nabi,family,id2,dat,te,te1,masr,ejaz,masraf,radr, mah,sal,pez,jamt)" & _
"VALUES (@nabi,@family,@id2,@dat,@te,@te1,@masr,@ejaz,@mas raf,@radr,@mah,@sal,@pez,@jamt)"
Dim cmd AsNew OleDbCommand(strSQL, con)
With cmd
.Parameters.Add(New OleDbParameter("@nabi", Label41.Text))
.Parameters.Add(New OleDbParameter("@family", Label45.Text))
.Parameters.Add(New OleDbParameter("@id2", Label46.Text))
.Parameters.Add(New OleDbParameter("@dat", Label5.Text))
.Parameters.Add(New OleDbParameter("@te", Val(TextBox5.Text)))
.Parameters.Add(New OleDbParameter("@te1", Val(Label74.Text)))
.Parameters.Add(New OleDbParameter("@masr", ComboBox4.Text))
.Parameters.Add(New OleDbParameter("@ejaz", ComboBox35.Text))
.Parameters.Add(New OleDbParameter("@masraf", Label47.Text))
.Parameters.Add(New OleDbParameter("@radr", Label48.Text))
.Parameters.Add(New OleDbParameter("@mah", C4.Text))
.Parameters.Add(New OleDbParameter("@sal", C5.Text))
.Parameters.Add(New OleDbParameter("@pez", pez.Text))
.Parameters.Add(New OleDbParameter("@jamt", jamt))
EndWith
con.Open()
cmd.ExecuteNonQuery()
con.Close()
EndIf
con.Close()
dr.Close()

اين كد update:


Dim updateSql11 AsString
updateSql11 = "update noskh3 set jamt =val( '" & jamt & "'),te =val( '" & TextBox6.Text & "'),te1 = val('" & Label75.Text & "'),masr = '" & ComboBox5.Text & "',ejaz = '" & ComboBox36.Text & "',pez = '" & pez.Text & "',te2 = val('" & Label75.Text & "') where dat = '" & Label10.Text & "' and nabi = '" & Label41.Text & "' and family = '" & Label45.Text & "' and id2 = '" & Label46.Text & "'"
con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\db.mdb")
cmdSelect = New OleDbCommand(updateSql11, con)
con.Open()
cmdSelect.ExecuteNonQuery()
con.Close()

برنامه هم به اين صورت شبكه است كه برنامه و بانك بر روي يك كلاينت است و به 2 كلاينت ديگر shortcut دادم