PDA

View Full Version : سوال: عمل نکردن یک خط SQL



opluse
چهارشنبه 28 دی 1390, 16:10 عصر
سلام دوستان من یه خط SQL دارم که نمیدونم چرا کار نمیکنه کدشو میزارم یع نگاه بندازین .




uname:=Tuser.Text;
pass:=Tpass.Text;
try
DM.ADOQ.Close;
DM.ADOQ.SQL.Clear;
DM.ADOQ.SQL.Add('SELECT * FROM `tbl_user_fa` WHERE `fld_User_Name` LIKE "'+uname+'" AND `fld_Password` LIKE "'+pass+'" AND `fld_Access_Level` = 0 AND `fld_Co_Code` = 0');
DM.ADOQ.Open;
//** if ComBo.ItemIndex = 0 then
//**begin
//**Fusers.Show;
//**Login.Hide;
//**end;
//** if ComBo.ItemIndex = 1 then
//** begin
//** Fusers.Show;
//** Login.Hide;
//** end;

except
begin
ShowMessage('نام کاربری یا رمز عبور اشتباه میباشد');
end;




حالا مشکل من اینه که نمیدونم چرا اصلا فرقی نمیکنه که یوز و پسورد چی بهش بدی هرچی بدی قبول میکنه و Login انجام میشه .

دوستان اشکال کار رو پیدا کردن راهنمایی کنن . ممنون .

سعید صابری
چهارشنبه 28 دی 1390, 19:08 عصر
کجای کد یوزر و پاس چک می کنه؟
و بعد وقتی Like میزاری یک حرف user و pass درست وارد بشه اون user انتخاب میشه باید از = استفاده کنی

opluse
چهارشنبه 28 دی 1390, 19:20 عصر
ممنون سعید جان ، یادم رفت بگم دیتابیسم MySQL هست البته فکر نکم فرقی داشته باشه ، ولی من این کد رو از خود Mysql برداشتم و جایگذین کردم ، ولی خوب با = هم چک کردم نشد بازم همینطوره :(

سعید صابری
چهارشنبه 28 دی 1390, 20:09 عصر
شما کد ننوشتی که USER و PAS چک کنه
شما فقط یک SELECT زدین و دیگه دنباله اش نرفتین که ببینید چیزی SELECT شده یا نه یک IF کم داری

opluse
جمعه 30 دی 1390, 05:34 صبح
سعید جان توی دستور بالا WHERE وظیفش همینه دیگه !! باید یک سری از پارامتر هارو چک کنه . من 4 تا پارامتر بهش دادم که اصلا به هیچ کدوم توجهی نمیشه .
اما در مورد if اگه منظورت اینه که query رو شرط بزارم که try و except اینکارو انجام میده و اگه منظورت برای وجود داشتن یوزر و پس ، if بزارم که بازم WHERE باید اینکارو انجام بده ، البته با IF میشه انجام داد و سرو تهش رو جم کرد ولی مشکل من اینجاست که چرا دستورات رو اجرا نمیکنه ؟!!

سعید صابری
جمعه 30 دی 1390, 16:09 عصر
بله where وظیفه اش همینه. ولی باید شرطی هم بزاری که ببینی نتیجه کوئری چی شده یا نه؟ باید بدونی رکوردی انتخاب شده یا نه؟
در ضمن گفتم like نباید بزاری = بزار

AmirSky
جمعه 30 دی 1390, 16:45 عصر
این کد ها خیلی اشکال داره یکی اینکه از like استفاده کردی
دوم اینکه پسورد رو بدون اینکه کد بشه داخل دیتابیس چک میشه
سوم اینکه ای کاش میگفتی از این کد ها در کجا استفاده میکنی . اگه این کد ها فقط داخل فرم لاگین باشند در هرصورت لاگین انجام میشه.
باید در صورت اشتباه بودن پسورد یا نام کاربر یک مقدار به فرم اصلی ارسال بشه تا فرم اصلی برنامه نمایش داده نشه.
باز هم اگه مشکلی بود بگو نمونه کد بزارم

pezhvakco
جمعه 30 دی 1390, 20:01 عصر
سعید جان توی دستور بالا WHERE وظیفش همینه دیگه !! باید یک سری از پارامتر هارو چک کنه . من 4 تا پارامتر بهش دادم که اصلا به هیچ کدوم توجهی نمیشه .
شما چه طوری متوجه شده که هیچ توجهی نمیکنه ؟
اون وظیفش رو انجام میده یعنی پارامت رها رو چک میکنه .

اما در مورد if اگه منظورت اینه که query رو شرط بزارم که try و except اینکارو انجام میده
دستور شرطی Ifچه ربطی داره به دستور فرمانی کنترل خطای try ، except ؟
if برای شزطی کردن انجام دادن یا ندادن کاری است و try ، except برای کنترل رویداد خطای احتمالی در اجرای دستور های درون این دو فرمان .

اگه منظورت برای وجود داشتن یوزر و پس ، if بزارم که بازم WHERE باید اینکارو انجام بده ، البته با IF میشه انجام داد و سرو تهش رو جم کرد ولی مشکل من اینجاست که چرا دستورات رو اجرا نمیکنه
منظورشون اینه که دستوری نوشتی بر این اساس که برود در جدول ردیف داده ای رو پیدا کنه که با شرایط شما برابری داشته باشه و اون ردیف داده رو در ADO بارگذاری کنه، خوب حالا نمی خوای به بینی که این ADO بنده خدا چه کار شده و آیا داده ای درونش است و یا نیست که بر اساس اون کاری انجام بشه .

این دستور شرطی که در ادمه برای کومبو نوشتی از کجا اومده ؟

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