PDA

View Full Version : مشکل هنگام ذخیره و بازیابی فایل



arenaw
چهارشنبه 20 اردیبهشت 1391, 17:20 عصر
سلام
یه دوستی تاپیک زده بودن که چجوری اطلاعات کنترل های فرم رو ذخیره کنم و بعد دوباره بازیابی کنم؟
من این کد رو با راهنمایی که دوستان انجام داده بودن نوشتم و کار هم کرد،
بعد همینطور که داشتم کدم رو اصلاح میکردم و کوتاه تر میکردم، با ارور file alerdy opened هنگام بازیابی ( که قسمت باز شدن فایل داخل کد های کامند سیو رو هایلایت میکنه) مواجه شدم! متاسفانه بکاپی هم از کد اولم نداشتم ولی این کد رو هرجوری که نگاه میکنم بعد از سیو فایل بسته میشه! تازه وقتی برنامه رو میبندم و دوباره باز میکنم وقتی کامند لود رو میزنم باز هم همین ارور رو میده در صورتی که اصلا کامند سیو رو نزدم!


Private Sub cmdLoad_Click()
Dim s$, Obj As Object
Open App.Path & "\data.cnf" For Input As #1
Do While Not EOF(1)
Line Input #1, s
For Each Obj In Me.Controls
If Obj.Name = Mid(s, 1, InStr(1, s, "=") - 1) Then Obj = Mid(s, InStr(1, s, "=") + 1)
Next
Loop
Close #1
MsgBox "Data Loaded!"
End Sub

Private Sub cmdSave_Click()
Dim Obj As Object
Open App.Path & "\data.cnf" For Output As #1
For Each Obj In Me.Controls
Print #1, Obj.Name & "=" & Obj
Next
Close #1
MsgBox "Data Saved!"
End Sub

arenaw
چهارشنبه 20 اردیبهشت 1391, 17:47 عصر
دوستان مشکلم حل شد ولی تاپیکو پاک نمیکنم شاید کس دیگه ای هم با این مشکل مواجه بشه:

وقتی توی کد نوشتم for each object in me.control و مثلا میخوام نام تمام آبجکت هارو برگردونه وقتی به آبجکت های کامند بوتون میرسه، یک بار کد های داخلشون رو هم اجرا میکنه (یعنی موقع لود قبل بسته شدن فایل یه بار دیگه میخواد فایل رو اپن کنه...)
این هم کد اصلاح شده:



Private Sub cmdSave_Click()
Dim Obj As Object
Open App.Path & "\data.cnf" For Output As #1
For Each Obj In Me.Controls
If Not TypeOf Obj Is CommandButton Then Print #1, Obj.Name & "=" & Obj
Next
Close #1
MsgBox "Data Saved!"
End Sub
Private Sub cmdLoad_Click()
Dim s$, Obj As Object
Open App.Path & "\data.cnf" For Input As #1
Do While Not EOF(1)
Line Input #1, s
For Each Obj In Me.Controls
If Not TypeOf Obj Is CommandButton And Obj.Name = Mid(s, 1, InStr(1, s, "=") - 1) Then Obj = Mid(s, InStr(1, s, "=") + 1)
Next
Loop
Close #1
MsgBox "Data Loaded!"
End Sub