ورود

View Full Version : سوال: تغییر کلمه عبور کاربری+جستجو+نمایش فیلد مشخص شده در دیتا ریپورت



ashkan1234
جمعه 03 شهریور 1391, 14:24 عصر
91768
با دورد خدمت دوستان!
یه چندتا مشکل داشتم،همشو یکباره عرض میکنم!
با کدهایی که در فایل بالا نوشتم چندتا مشکل دارم،اگه دوستان کمک کنند ممنون میشم:
1-بعد از وارد کردن نام کاربری و کلمبه عبور وارد نرم افزار شوید(مثلا میتونید از نام کاربری:1 و پسورد:1 استفاده کنید)حالا وارد قسمت Securty بشید تو دیتا گریدش رو نگاه کنید فقط تو لیستش نام اون یوزری که باهاش وارد شدید رو نمایش میده!حالا اگه دکمه Back رو بزنید و دوباره وارد Securty بشید،لیست رفرش میشه و تمام لیست رو میاره!
دلیلش هم کدیه که نوشتم!میاد فیلترش میکنه!اگه میشه روش درست رو بفرمایید؟

2-دکمه Securty رو بزنید،حالا کاربر مورد نظر رو انتخاب کنید و دکمه EditPass رو بزنید،با استفاده از فرم مربوطه باید فلیدها رو که درست پر کردید کلمه عبور را تغییر بده!(رو این یکی مخم پوکیده)

3-دکمه Sabt رو بزنید،چند شخص رو ثبت کنید!حالا Back رو بزنید و وارد Search بشید!
یه کمبو باکس گذاشتم که طبق اون عمل سرچ رو انجام میده!
حالا فرض کنید ID رو انتخاب مبکنم و تو تکست باکس مینویسم "1".
عمل سرچ فقط روی اونایی اعمال میشه که با یک شروع میشن!
در صورتی که من میخوام همه ID هایی که داخلشون عدد "1" هست رو برام سرچ کنه!
در مورد نام و نام خانوداگی هم همینطور!مثلا اگه من بزنم "ف" فقط برام اونایی که با "ف" شروع میشن رو میاره!درصورتی که میخوام تمام اونایی که توشون از "ف"استفاده شده رو نمایش بده!

4-آیا راهی وجود داره در دیتا ریپورت فقط یک شخص خاص از دیتا بیس رو برام نشون بده؟
مثلا مثل همین حالت سرچ،سرچ میکنم بعد گزارش گیری رو میزنم،حالا تو دیتا ریپورت فقط اونایی که سرچ کردم رو بیاره!

فعلا همیناست:لبخند::کف:
پیشاپیش از این که کمک میکنید ممنونم!

SlowCode
جمعه 03 شهریور 1391, 18:42 عصر
2- چرا پوکیده؟ خوب با دستور sql هرجا که پسورد قبلی رو پیدا کردی با پسورد جدید جایگزین کن. فقط باید واسه نام کاربری هم شرط بزاری چون ممکنه رمز چندتا کاربر یکی باشه که در اینصورت برنامه همشون رو عوض میکنه!

3- به جای این کد:
SQL = "SELECT * FROM TblSabt WHERE Left(Name," & Len(Text1) & ")='" & Trim(Text1) & "'"

از این کد استفاده کن:
SQL = "SELECT * FROM TblSabt WHERE " & Combo1.Text & " like '%" & Text1 & "%'"

راستی کل select case رو هم پاک کن و فقط این 2 سطر رو بنویس:
Adodc1.RecordSource = "SELECT * FROM TblSabt WHERE " & Combo1.Text & " like '%" & Text1 & "%'"
Adodc1.Refresh
و همینطور به جای:
If Combo1.Text = "انتخاب کنید" Then

از این استفاده کن:
If Combo1.ListIndex = 0 Then

ashkan1234
جمعه 03 شهریور 1391, 19:55 عصر
2- چرا پوکیده؟ خوب با دستور sql هرجا که پسورد قبلی رو پیدا کردی با پسورد جدید جایگزین کن. فقط باید واسه نام کاربری هم شرط بزاری چون ممکنه رمز چندتا کاربر یکی باشه که در اینصورت برنامه همشون رو عوض میکنه!

3- به جای این کد:
SQL = "SELECT * FROM TblSabt WHERE Left(Name," & Len(Text1) & ")='" & Trim(Text1) & "'"

از این کد استفاده کن:
SQL = "SELECT * FROM TblSabt WHERE " & Combo1.Text & " like '%" & Text1 & "%'"

راستی کل select case رو هم پاک کن و فقط این 2 سطر رو بنویس:
Adodc1.RecordSource = "SELECT * FROM TblSabt WHERE " & Combo1.Text & " like '%" & Text1 & "%'"
Adodc1.Refresh
و همینطور به جای:
If Combo1.Text = "انتخاب کنید" Then

از این استفاده کن:
If Combo1.ListIndex = 0 Then

آقا دستت درد نکنه عجب روش خوبی واسه سرچ گفتی!عالیه!
منتهی الان فقط مشکل 3 حل شد!مابقی همچنان باقی است!
در مورد 2 هم دقیقا متوجه نشدم چی گفتی!
اگه میشه بیشتر توضیح بدید!و بقیه مشکلات...!!!!؟؟؟

SlowCode
جمعه 03 شهریور 1391, 20:12 عصر
در مورد اولی دارم فکر میکنم، در مورد دیتا ریپورت هم تا حالا کار نکردم ولی توی اون هم باید با دستور select اون مورد رو که میخوای رو انتخاب کنی بعد گزارش رو نشون بدی. واسه سوال دومت هم از این کد استفاده کن:
If Text2 = Text3 Then
Adodc1.RecordSource = "SELECT * FROM TblAmniati where Username = '" & TxtUsername & "' Pass ='" & Text1 & "'"
Adodc1.Recordset.Fields(2).Value = Text2
Else
MsgBox "لطفا در وارد کردن اطلاعات دقت کنید"
End If
توی TxtUsername باید نام کاربری وارد بشه.

ashkan1234
جمعه 03 شهریور 1391, 20:45 عصر
در مورد اولی دارم فکر میکنم، در مورد دیتا ریپورت هم تا حالا کار نکردم ولی توی اون هم باید با دستور select اون مورد رو که میخوای رو انتخاب کنی بعد گزارش رو نشون بدی. واسه سوال دومت هم از این کد استفاده کن:
If Text2 = Text3 Then
Adodc1.RecordSource = "SELECT * FROM TblAmniati where Username = '" & TxtUsername & "' Pass ='" & Text1 & "'"
Adodc1.Recordset.Fields(2).Value = Text2
Else
MsgBox "لطفا در وارد کردن اطلاعات دقت کنید"
End If
توی TxtUsername باید نام کاربری وارد بشه.

نتونستم از این جواب بگیرم!میشه زحمت بکشی پیوست کنی؟!

star_star
جمعه 03 شهریور 1391, 22:42 عصر
دوست عزیز باید به بخش بانک های اطلاعاتی مراجعه کنی : http://barnamenevis.org/forumdisplay.php?166-%D9%85%D8%B7%D8%A7%D9%84%D8%A8-%D9%85%D8%B1%D8%AA%D8%A8%D8%B7-%D8%A8%D8%A7-%D8%A8%D8%A7%D9%86%DA%A9%D9%87%D8%A7%DB%8C-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%DB%8C-%D8%AF%D8%B1-VB6

m.4.r.m
شنبه 04 شهریور 1391, 08:33 صبح
4-آیا راهی وجود داره در دیتا ریپورت فقط یک شخص خاص از دیتا بیس رو برام نشون بده؟
مثلا مثل همین حالت سرچ،سرچ میکنم بعد گزارش گیری رو میزنم،حالا تو دیتا ریپورت فقط اونایی که سرچ کردم رو بیاره!اینو واضح بگو نفهمیدم منظورتو

اینم برنامه ای خواسته بودی فقط یه انتقاد برنامه نویسی رو اصولی بنویس برای ثبت اطلاعات در فرم ثبت از Adodc فرم جست و جو استفاده نمی کنن همه چیزو میریزی به هم . گشادی رو بزار کنار دو تا Adodc جدید اضافه کن

ashkan1234
شنبه 04 شهریور 1391, 09:31 صبح
اینو واضح بگو نفهمیدم منظورتو

اینم برنامه ای خواسته بودی فقط یه انتقاد برنامه نویسی رو اصولی بنویس برای ثبت اطلاعات در فرم ثبت از Adodc فرم جست و جو استفاده نمی کنن همه چیزو میریزی به هم . گشادی رو بزار کنار دو تا Adodc جدید اضافه کن

خیلی ممنون بلادل!
عالی بود!
4-فرض کنید تو همین نرم افزار تو قسمت Search میای یک شخصی رو سرچ میکنی!اون شخص پیدا میشه!حالا میای دکمه(فرضی)مشاهده و پرینت رو میزنی تا دیتا ریپورت باز بشه!میخوام وقتی دیتا ریپورت باز شد فقط اون شخصی که سرچ کردم رو نمایش بده!
توجه کرده باشید وقتی دیتا ریپورت رو باز میکنید کل اطلاعات ثبت شده رو میاره!
و اینکه آیا راهی داره که کل یک فرم رو داخل دیتا ریپورت بریزیم؟(کلا یه فرم کامل منظورمه)
-----------------------------
داداش اینی که پیوست کردی:
اگه یک adodc بزارم دقیقا چه مشکلی پیش میاد؟(جهت اطلاعات خودم)!
دوم اینکه شما یه زحمت کشیدید تو فرم ورود از کمبو باکس استفاده کردی(که واسه کاربر خیلی راحت تره)حالا میخوام بدونم اگه از تکست باکس استفاده کنم مشکلی پیش نمیاد که؟!!!(جهت اطلاعات خودم)!
یه دستور UCase دیدم،میشه توضیح بدید؟(جهت اطلاعات خودم)!

m.4.r.m
شنبه 04 شهریور 1391, 11:37 صبح
4-فرض کنید تو همین نرم افزار تو قسمت Search میای یک شخصی رو سرچ میکنی!اون شخص پیدا میشه!حالا میای دکمه(فرضی)مشاهده و پرینت رو میزنی تا دیتا ریپورت باز بشه!میخوام وقتی دیتا ریپورت باز شد فقط اون شخصی که سرچ کردم رو نمایش بده!
توجه کرده باشید وقتی دیتا ریپورت رو باز میکنید کل اطلاعات ثبت شده رو میاره!
و اینکه آیا راهی داره که کل یک فرم رو داخل دیتا ریپورت بریزیم؟(کلا یه فرم کامل منظورمه) If Adodc1.Recordset.RecordCount > 0 Then
Set Cnn = New ADODB.Connection
Cnn.CursorLocation = adUseClient
Cnn.ConnectionString = Adodc1.ConnectionString
Cnn.Open
'Adoview.Close
sqltxt = "SELECT * From TblSabt WHERE ID='" & text1.Text & "'"
Set Adoview = New ADODB.Recordset
Adoview.Open sqltxt, Cnn, adOpenStatic, adLockPessimistic
Set Report1.DataSource = Adoview
Report1.Show 1
Else
MsgBox "ÇØáÇÚÇÊí íÇÝÊ äÔÏ", vbExclamation, ""
End If


این کد رو تست بزن ببین جواب میگیری .


داداش اینی که پیوست کردی:
اگه یک adodc بزارم دقیقا چه مشکلی پیش میاد؟(جهت اطلاعات خودم)!
دوم اینکه شما یه زحمت کشیدید تو فرم ورود از کمبو باکس استفاده کردی(که واسه کاربر خیلی راحت تره)حالا میخوام بدونم اگه از تکست باکس استفاده کنم مشکلی پیش نمیاد که؟!!!(جهت اطلاعات خودم)!
یه دستور UCase دیدم،میشه توضیح بدید؟(جهت اطلاعات خودم)! استفاده مکرر از یک آبجکت در یک فرم و فرم های دیگه بعداً ممکن دچار اشتباه و خطا بشه تو مقادیر و اسامی تو بعضی جاها میشه فقط از یه Adodc استفاده کرد اونم فقط داخل یک فرم مگر اینکه یه ماژول درست کنی برا خودت یک بار فراخوانی هاتو تو اون بنویسی و تو فرم ها فقط صدا بزنی . اینطوری هم منطقیه هم قابل قبول

کمبو باکس برای یوزر نیم ها به نظر من بهتره چون اگه یک کاراکتر اشتباه نوشته بشه تو تکست باکس یوزرنیم از دیتابیس خونده نمیشه در ضمن مشکلی نداره میتونی تکست هم بزاری مشکلی نداره اون امنیتش بیشتره اما امنیت به اینه که شما پسوورد به صورت کد شده در بانک ذخیره کنی و بخونی تا هیچ کس نتونه جز برنامه بهش دسترسی داشته باشه .
دستور Ucase یعنی اینکه تبدیل حروف کوچک به بزرگ وLcase برعکس همین دستور

ashkan1234
شنبه 04 شهریور 1391, 12:35 عصر
از توضیحاتتون ممنونم!
واسه دیتا ریپورت اون کده جواب نداده!
پیوست کردم!زحمت بکشید ببینید!
من هنوز با این سرچ مشکل دارم!
تو نرم افزارهای دیگه ام از این کدی که آقا محسن زحمت کشیدن، استفاده میکنم ارور میده!
به Adodc.Refresh گیر میده!تو این نرم افزار مورد نداره ولی تو چندتا از سورسام امتحان کردم جواب نمیده!
تو سایر نرم افزار ها هم Adodc رو با کد به دیتابیس وصل کردم!دیتا بیس هم چک کردم مشکلی نداره!(چیزی که به نظرم میرسه اینه که با کمبو باکس مشکل داشته باشه!بازهم دقیق نمیدونم!)
اگه راهی هست بهم بگید لطفا!
91806

m.4.r.m
شنبه 04 شهریور 1391, 13:03 عصر
برای اینکه کدی که من دادم برای ریپورت کار کنه باید Command1 و DataEnviroment رو از دیتا ریپورت بر میداشتی عزیز آب در کوزه و تو گرد .... یکم دقت کن بالا پایین کن زیر و رو کن پاک کن دوباره بنویس یاد میگیری سرچم برات درست کردم

ashkan1234
شنبه 04 شهریور 1391, 13:28 عصر
برای اینکه کدی که من دادم برای ریپورت کار کنه باید Command1 و DataEnviroment رو از دیتا ریپورت بر میداشتی عزیز آب در کوزه و تو گرد .... یکم دقت کن بالا پایین کن زیر و رو کن پاک کن دوباره بنویس یاد میگیری سرچم برات درست کردم
خوب من حرفه ای نیستم!
همش 4 ماه دارم با ویژاول بیسکی کار میکنم!
ولی خوب 4ماه بکوب دارم کار میکنم تا یاد بگیرم!تا الانم خیلی چیزا یاد گرفتم!
مثلا همین امروز یه عالمه چیز از خودت یاد گرفتم داداش!
فقط یه چیزی الان هست!این سرچه بازم اونی که من میخوام نیست!
یعنی من میخوام وقتی کاربر میزنه "ت" تمام اسمهایی که توش از "ت" بکار گرفته شده رو برام پیدا کنه!
اینی که شما قرار دادی فقط اونایی که با "ت"شروع میشه رو سرچ میکنه!
اونی که آقا محسن قرار داده بود همون کاری رو میکرد که من میخواستم ولی ارور میداد!اینی که شما گذاشتی ارور نمیده ولی اونی که من میخوام نیست!
واسه امنیت پسورد هم دقیقا همون کاری که شما گفتی رو میکنم!
واسه دیتاریپورت هم دستت درد نکنه!!خیلی رو این وقت گذاشتم!واقعا ممنونم!

m.4.r.m
شنبه 04 شهریور 1391, 13:48 عصر
یعنی من میخوام وقتی کاربر میزنه "ت" تمام اسمهایی که توش از "ت" بکار گرفته شده رو برام پیدا کنه!

این اصلا یعنی چی ؟ اون وقت برای چی جست و جو می کنی ؟

اینی که من برات نوشتم یعنی اونایی که با حرف"ت" شروع میشن رو نشونت بده ، من اینجوریشو ندیده بودم . دستور Like یعنی همون اسامی مشابه رو نشون بده دیگه چی میخوای .

ashkan1234
شنبه 04 شهریور 1391, 13:57 عصر
این اصلا یعنی چی ؟ اون وقت برای چی جست و جو می کنی ؟

اینی که من برات نوشتم یعنی اونایی که با حرف"ت" شروع میشن رو نشونت بده ، من اینجوریشو ندیده بودم . دستور Like یعنی همون اسامی مشابه رو نشون بده دیگه چی میخوای .
خیلی متوجه نشدم چی گفتید!
اگه یک نگاهی به سورسی که قرار دادم بیندازید،متوجه میشیدکه کدی که من واسه سرچ نوشتم دقیقا همین کاری رو میکنه که شما کدشو قرار دادی!
من این روشی که عرض کردم کدش رو میخوام!

دقیقا میشه این کد:
Adodc1.RecordSource = "SELECT * FROM TblSabt WHERE " & Combo1.Text & " like '%" & Text1 & "%'"
Adodc1.Refresh


منتهی این ایراد داره!رو متد رفرش ارورو میده!
شما کدی داری که بشه این کاری که من میخوام رو بکنه؟!!

m.4.r.m
شنبه 04 شهریور 1391, 14:22 عصر
SQL = "SELECT * FROM TblSabt WHERE Name LIKE " & "'%" & Trim(Text1.Text) & "%'"
Adodc1.RecordSource = SQL
Adodc1.Refresh


اینم دستوری که می خواستی

ashkan1234
شنبه 04 شهریور 1391, 14:41 عصر
SQL = "SELECT * FROM TblSabt WHERE Name LIKE " & "'%" & Trim(Text1.Text) & "%'"
Adodc1.RecordSource = SQL
Adodc1.Refresh


اینم دستوری که می خواستی

دقیقا مثل همون مشکلی که تو کد آقا محسن داشت!
به عکس زیر نگاه کنید!
به ترتیب از بالا به پایین!
http://up.vatandownload.com/images/8dzew6d0pnh545v13f4m.jpg (http://up.vatandownload.com/)

m.4.r.m
شنبه 04 شهریور 1391, 14:58 عصر
برای انکه Adodc3 رو تعریف نکردی .

اینم توی Form_Load اضافه کن :

Adodc3.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\Project1.mdb;Jet OLEDB:Database Password=;"

ashkan1234
شنبه 04 شهریور 1391, 15:10 عصر
برای انکه Adodc3 رو تعریف نکردی .

اینم توی Form_Load اضافه کن :

Adodc3.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\Project1.mdb;Jet OLEDB:Database Password=;"
نه تو فرم لود کانکتش رو زدم!
داداش دستت رو میبوسم!
میدونی مشکل چی بود؟
اصلا من اشتباه میکردم!
باید تو کد سرچم یه Tbl دیگه رو میاوردم!
رفتم تو قسمت فرم لود دیدم اون تیبلی(tblpersonel) که کانکت کردم با اون تیبلی(tblsabt) که واسه سرچ زدم با هم همخونی نداره!
یعنی از صبح تا حالا سر کارم!
البته مربوط به بلد بودن یا نبودنم نیست!مغزم یخورده خسته است!(چون وقتی مخم کار کنه اینجور سوتی ها رو نمیدم)
به هر حال دستت درد نکنه!
حـــــــلــــــــــــــــ ــــــــــــــه دادا!
داداش یه سوال دیگه:
دیدی دیتا گرید اسکرول داره؟
اسکرولش رو وقتی که کلیک موس پایینه اینور اونور مکشی حرکت نمیکنه تا زمانی که دستت رو از کلیک برداری!
راهی برای اینم داری؟!

m.4.r.m
شنبه 04 شهریور 1391, 15:19 عصر
نه دیگه اینو زنگ بزن مایکروسافت این مشکل خود دیتاگرید.

ashkan1234
شنبه 04 شهریور 1391, 15:24 عصر
نه دیگه اینو زنگ بزن مایکروسافت این مشکل خود دیتاگرید.

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

ashkan1234
یک شنبه 05 شهریور 1391, 10:20 صبح
داداش 2تا مشکل!
1-کدی که واسه سرچ دادی دقیقا همونجوری عمل میکنه که من میخوام!منتهی یک مشکلی،وقتی تکست باکس مربوط به سرچ رو خالی میکنم Adodc1 رو برام رفرش نمیکنه!حتی این کارم کردم نشد:
If Text1.Text <> Empty Then
تغییر دادم به این:
If Text1.Text > Empty Then
------------------------------------
2-تو قسمت دکمه دیتا ریپورت کدهاشو یه نگاه کنید!فقط رو قسمت ID عمل میکنه!اگه کمبو باکس رو بزاری رو Name دیتا ریپورت خالی میاد!و اینکه میخوام مثل بالا که گفتم وقتی تکست باکس خالی شد،همه لیست رو ببره تو دیتا ریپورت (در صورتی که الان دکمه دیتا ریپورت رو میزنی بازم خالیه)!
اینم کدها که توسط خودم ویرایش شد::کف:
91858

m.4.r.m
یک شنبه 05 شهریور 1391, 13:09 عصر
دکمه Search زمانی که تکست خالی باشه عمل رفرش انجام میده

ashkan1234
یک شنبه 05 شهریور 1391, 13:22 عصر
دکمه Search زمانی که تکست خالی باشه عمل رفرش انجام میده

برادر هنوز مشکل داره!
سرچ که هنوز همونجوریه!
یبار یه چیزی رو سرچ کن،بعد دوباره تکست رو خالی کن،حالا سرچ رو بزن(الان باید کل دیتا بیس رو بیاره تو دیتا گرید)ولی اینکارو نمیکنه!
واسه قسمت دیتا ریپورت هم زمانی که فرم رو باز میکنی و دکمه دیتا ریپورت رو میزنی ،دیتا ریپورت خالی میاد. در صورتی که باید کل دیتا گرید رو بیاره اون تو!و حتی ارور هم میده!
ممنون از لطفت!

m.4.r.m
یک شنبه 05 شهریور 1391, 13:47 عصر
یه ذره تلاش کن خودت خلاقیت نشون بده همه رو درست می کنی کاری نداره اینا که دیگه پسر خوب خودم دارم رو پروژه کار می کنم تا شهریور باید تحویل بدم سرم شلوغه خودت سعی کن بنویس

ashkan1234
یک شنبه 05 شهریور 1391, 13:58 عصر
یه ذره تلاش کن خودت خلاقیت نشون بده همه رو درست می کنی کاری نداره اینا که دیگه پسر خوب خودم دارم رو پروژه کار می کنم تا شهریور باید تحویل بدم سرم شلوغه خودت سعی کن بنویس

آقا دستت درد نکنه!
خیلی ممنون!
راست میگی خداییش،یک سری مشکلات داشتم،کار که کردم دیدم خودم میتونم حلش کنم!
شرمنده برات مزاحمت ایجاد کردم!
دیگه کارم تموم شد!
نمیدونم چطور ازت تشکر کنم!!!!؟:قلب::قلب::قلب: