PDA

View Full Version : استفاده از ماژول



ehsanocx
شنبه 02 اردیبهشت 1391, 16:22 عصر
سلام دوستان
من یکسری کد دارم برای محدود کردن کاربر که این کد ها توی تمام فرم هام استفاده کردم. نزدیک 40 تا 50 خط میشه می خوام این کد ها رو توی ماژول بنویسم و توی فرم هام این کد هارو فرا خوانی کنم میشه چنین کاری کرد؟
اگر میشه میشه راهنماییم کنید؟

این کد های منه:



Dim db6 As New Connection
Dim Adodc6 As New Recordset

'******************************
For I = 1 To Adodc6.RecordCount
If Adodc6.Fields("User1") = FormShams.txtUser Then
txtEdit.Text = Adodc6.Fields("edit")
Else
Adodc6.MoveNext
End If

Next I


If txtEdit.Text = 1 Then

cmdEdit.Enabled = False

Exit Sub
end if

'**********************************************
For I = 1 To Adodc6.RecordCount
If Adodc6.Fields("User1") = FormShams.txtUser Then
txtPrint.Text = Adodc6.Fields("print1")
Else
Adodc6.MoveNext
End If

Next I

If txtPrint.Text = 1 Then

cmdPrint.Enabled = False

Exit Sub
end if

'************************************************* ******


For I = 1 To Adodc6.RecordCount
If Adodc6.Fields("User1") = FormShams.txtUser Then
txtSabt.Text = Adodc6.Fields("sabt")
Else
Adodc6.MoveNext
End If

Next I

'************************************************* ***
If txtSabt.Text = 1 Then

cmdSave.Enabled = False

Exit Sub

end if

'************************************************* ***

For I = 1 To Adodc6.RecordCount
If Adodc6.Fields("User1") = FormShams.txtUser Then
txtDelete.Text = Adodc6.Fields("delete1")
Else
Adodc6.MoveNext
End If

Next I

If txtDelete.Text = 1 Then

CmdDelete.Enabled = False

Exit Sub

ElseIf Delete = 0 Then
MsgBox "áØÝÇ Ñ˜æÑÏ ãæÑÏ äÙÑ ÑÇ ÇäÊÎÇÈ ˜äíÏ", vbExclamation, "ÎØÇ"
Exit Sub
end if


من این کد هارو توی 40 تا فرم استفاده می کنم و توی این 40 تا فرم تکرار میشه.

چطوری می تونم از ماژول استفاده کنم و خروجی این کد هارو توی فرمم هام فراخوانی کنم؟

ehsanocx
شنبه 02 اردیبهشت 1391, 16:23 عصر
این کد ارتباط با بانکم هست :



'************************************************* *********


db6.Open "provider=msdasql;driver={sql server};server=;id=;pwd=;database=shams"
Adodc6.CursorLocation = adUseClient
Adodc6.Open "select * from login", db6, adOpenDynamic, adLockOptimistic

'************************************************* *********

ehsanocx
شنبه 02 اردیبهشت 1391, 16:25 عصر
این کد ارتباط با بانکم باید توی ماژول قرار بگیره. تا این کد ها کار کنن . بانکم SQL 2008

Mr'Jamshidy
شنبه 02 اردیبهشت 1391, 21:52 عصر
اره دوست من میشه خیلی هم سادس

اما به پارامتر هاش دقت کن دا روی فرمی تاثیر بزاره که داره ار اون جا خونده میشه

ehsanocx
یک شنبه 03 اردیبهشت 1391, 10:42 صبح
آقا جمشید میشه بیشتر راهنمایی کنین من هیچ اطلاعاتی در رابطه با ماژول ها ندارم.

Mr'Jamshidy
یک شنبه 03 اردیبهشت 1391, 11:37 صبح
ببین دوست من

اول از همه جمشید نه جمشیدی :چشمک:

دوم:

شما یک ماژول میسازی

داخل ماژول اول از همه ثابت ها و متغیر ها رو تعریف میکنی

بعد رویه و تابع ها رو تعریف میکنی

یک مثال برات میزنم خودت تا ته ش برو

من میخوام یک پروژه بنویسم که که 10 تا فرم داشته باشه و هر فرمی که باز شد رنگ زمینه فرمم خاکستری بشه
آیکان فرمم تغییر کنه
عنوان فرمم تغییر کنه
و فرمم وسط صفحه قرار بگیره (با کد)

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

حالا یک ماژول به برنامم اضافه میکنم (با هر اسم دل بخواهی که اگر لازمش داشتم بتونم پیداش کنم)

بعد کد زیر رو بهش اضافه میکنم

Const BgColor As Long = &HA0A0A0

Sub setFormC(frm As Form)
With frm
.BackColor = BgColor
.Caption = GetCaption
Set .Icon = Form1.imgIcon.Picture
.Left = (Screen.Width / 2) - (.Width / 2)
.Top = (Screen.Height / 2) - (.Height / 2)
End With
End Sub

Function GetCaption() As String
GetCaption = "VB Sample Module"
End Function

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

setFormC Me

به همین راحتی

اما در بعضی موارد ماژول کار راه نمیندازه اونجا کلاس ماژول بدرد میخوره

البته من تا به حال چیزایی که خودم نوشتم (نه از جایی برداشتم) همه ش با ماژول بوده و تا همین لحظه از کلاس ماژول استفاده نکردم

موفق باشید

ehsanocx
یک شنبه 03 اردیبهشت 1391, 12:33 عصر
اما من این کد هایی که دارم رو توی ماژول میزارم . به ارتباط با بانکم گیر میده :
db6.Open "provider=msdasql;driver={sql server};server=;id=;pwd=;database=shams"
Adodc6.CursorLocation = adUseClient
Adodc6.Open "select * from login", db6, adOpenDynamic, adLockOptimistic

میشه توی ماژول از بانکم استفاده کرد؟

ehsanocx
یک شنبه 03 اردیبهشت 1391, 12:54 عصر
من تونستم با ماژول کار کنم .


Dim db6 As New Connection
Dim Adodc6 As New Recordset


Sub Conn()

db6.Open "provider=msdasql;driver={sql server};server=;id=;pwd=;database=shams"
Adodc6.CursorLocation = adUseClient
Adodc6.Open "select * from login", db6, adOpenDynamic, adLockOptimistic
'******************************

End Sub

Sub Edit()
Conn
'******************************

For I = 1 To Adodc6.RecordCount
If Adodc6.Fields("User1") = FormShams.txtUser Then
txtEdit.Text = Adodc6.Fields("edit")
Else
Adodc6.MoveNext
End If

Next I


If txtEdit.Text = 1 Then

cmdEdit.Enabled = False

Exit Sub




به این صورت

و توی فرم لود هر فرم امدم Edit رو فراخوانی کردم. خوب؟
اما حالا فرم ها رو باز می کنم به txtEdit.Text و cmdEdit.Enabled = False گیر میدم پیغام error میده :Object required


اما این کار ور می کنم درست میشه گیر کار کجاست؟
FrmEdit.txtEdit.txt , FrmEdit.CMdEdit.enable=False
؟

یعنی اسم فرم رو قبل از تکست باکس و نام بوتون توی ماژول میارم درست میشه گیر کار کجاست؟
من که نمی تونم 40 تا ماژول درست کنم و توی هر ماژول اسم فرم هام رو پشت تکست باکس هاش بیارم چیکار باید کنم ؟ که این کد توی کل فرم هام جواب بده وقتی فراخوانی می کنم دیگه به نام فرم نیاز نداشته باشه؟

Mr'Jamshidy
یک شنبه 03 اردیبهشت 1391, 14:22 عصر
در مورد بانک ها هم من نمیتونم کمک کنم اما این نحوه تابع نوشتن شما جالب نیست

اما مهم اینه که کار راه انداز باشه

ehsanocx
یک شنبه 03 اردیبهشت 1391, 16:18 عصر
آقای جمشیدی این مشکل من چطوری حل میشه؟ راه حلشو بلدین؟

ehsanocx
دوشنبه 04 اردیبهشت 1391, 09:18 صبح
دوستان و مدیران کسی بلد نیست به سوال من جواب بده؟ من گیر همین یک ایرادم لطفا بر طرف کنید خیلی بهش نیاز دارم. با تشکر

Mr'Jamshidy
دوشنبه 04 اردیبهشت 1391, 10:23 صبح
دوست عزیز من تا بحال با بانک اطلاعاتی کار نکردم و نمیتونم کمکت کنم

شما تو یک سورس جدا و در یک فرم نه اضافه تر کار های ارتباط با بانک اطلاعاتی رو انجام بده و سورس رو بزار تا من برات تو ماژول بنویسم