PDA

View Full Version : راهنمایی در مورد نحوه خواندن تمامی رکوردها



tefos666
شنبه 18 اسفند 1386, 10:20 صبح
سلام دوستان

من یک لوگین درست کردم که دیتابیس اون اکسس هستش یک جدول دارم

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

ولی متاسفانه نمیدونم چرا برنامه فقط اولین رکورد جدول رو میخونه من میخوام هرکسی با هر

نام کاربری و کلمه عبوری که تو دیتابیس هست بتونه لوگین کنه ولی فقط اولین رکورد جدول اگه با شروطی که تو برنامه گفتم میتونه

من اینجوری نوشتم

if(datasource1.DataSet['logid']=Edit1.Text) and (datasource1.DataSet['password']=Edit2.Text) then
begin
form3.show;
Form2.Hide;
end;

البته وقتی این راه جواب نداد از کوئری هم استفاده کردم ولی اون هم جواب نداد

query1.sql.text:='select * from login where logid= :lid and password= :pss ';

و اون طرف اینطوری استفادش کردم
close()
paramsbyname(logid).value:=edit1.text

paramsbyname(pss).value:= edit2.text
open()
execsql;
و یک شرط if گذاشتم که اگر درست بود بره فرم بعد

من یادم هست تو C# من با sql یک دستور بود tip[] که با اون میشد اولین سطر و ستون جدول رو خوند و به پایین رفت و دونه دونه رکورد ها رو با شرط چک کرد ولی تو دلفی نمیدونم چطوریه ؟ ممنون میشم اگر راهنمایی کنید خیلی گیر کردم

ضمنا دیتابیس من اکسس هستش

vcldeveloper
شنبه 18 اسفند 1386, 11:10 صبح
1- بعد از Open از ExecSQL استفاده نمیشه. درباره تفاوت این دو قبلا بحث کردیم.
2- برای حرکت بین رکوردهای DataSet در دلفی، متدهای First, Prior,Next,Last,MoveBy وجود دارند. برای جستجوی یک رکورد خاص هم می تونید از متد Locate استفاده کنید.
در راهنمای دلفی توضیحات مربوط به کلاس TDataSet را مطالعه کنید.

tefos666
شنبه 18 اسفند 1386, 11:21 صبح
دوست عزیز میشه کاملتر توضیح بدی یعنی یه مثال بزنی ؟ یه لوگین ساده با دیتابیس :متفکر:

vcldeveloper
شنبه 18 اسفند 1386, 11:44 صبح
دیگه چی رو مثال بزنم؟ Next میره به رکورد بعدی، prior میره به رکورد قبلی و... اسمشون مشخصه که چیکار میکنند.
Locate هم که توی راهنمای دلفی کامل توضیح داده شده، اینجا هم اگر جستجو کنید، انواع سورس کدهایی که توش از Locate برای جستجو استفاده شده رو پیدا می کنید.
ExecSQL هم که باز توی همین سایت قبلا بحث شده.
کل کلاس TDataُSet هم در راهنمای دلفی شرح داده شده.
خود دلفی هم توی پوشه Demos در زیر پوشه های Db و Ado مثالهای مختلفی از کار با بانک اطلاعاتی داره.
با توجه به همه اینها، من دیگه چی رو مثال بزنم؟!

delphiprog3000
شنبه 18 اسفند 1386, 14:52 عصر
سلام با اجازه استاد کشاورز.


این مثال adoquery :


var user1,pass1:string;

with qry_login do
begin
close;
SQL.Text:='select * from tbluser where [user] like'+QuotedStr(edt_user.Text)+'and pass like '+QuotedStr(edt_pass.Text);
open;
if not IsEmpty then
begin
user1:=FieldValues['user'];
pass1:=FiledValues['pass'];
Menu_form.showmodal;
end
else Showmessage('ورود شما امکان پذیر نمیباشد');
end;

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

tefos666
سه شنبه 21 اسفند 1386, 08:53 صبح
آقا واقعا ممنونم از همتون

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



while not datasource1.dataset.eof do

begin

if (datasource1.dataset['username']:=edit1.text) and (datasource1.dataset['password']:=edit2.text) then
begin
form2.show;
form1.hide;
table1.close();

end;
datasource1.dataset.next;
end;

البته چون من از این نام کاربری و کلمه عبور تو جای دیگه برنامه استفاده میکردم و چون جدول رو close کرده بودم (چون اگر نمیکردم برنامه همش تو loop بود و hang میکرد)
مجبور شدم 2 تا متغیر global تعریف کنم و مقدارها رو توی اون نگه دارم تا بعدا ازشون استفاده کنم



در کل مرسی از اینکه نظر دادین و راهنمایی کردین :افسرده::تشویق: