نمایش نتایج 1 تا 10 از 10

نام تاپیک: کد به دست آوردن آخرین کاربر وارد شده در سیستم به صورت Linq

  1. #1

    کد به دست آوردن آخرین کاربر وارد شده در سیستم به صورت Linq

    سلام و خسته نباشید. من برنامه دارم مینویسم وقتی که کاربر وارد برنامه میشه اطلاعات اون شخص نمایش داده میشه در برنامه و معلوم میشه که کسی وارد میشی و وقتی وارد برنامه شد اطلاعات اون کاربر وارد شده ثبت میشه و حالا میخوام به وسیله ساعت و تایمر و همچنین تاریخ خروج معلوم کنیم این طرف چقدر در سیستم بوده. ولی تو نشوتن کد به صورت Linq گیر کردم که بگم آخرین کاربر که وارد شده با این شناسه کی هستش وقتی آخرین کاربر وارد شده با نام کاربری رو شناخت کی بود اطلاعات مروبط به ساعت خروج، تایمر و تاریخ رو ویرایش کنه در برنامه برای اینکار از تایمر استفاده کردم که هر 3 ثانیه اطلاعات آخرین نفر که وارد شده با همین نام کاربری که در سیستم هستش رو شناسای و به روز کنه ولی نمی دونم چطور به این صورت کوئری بنویسم در Linq برای ویرایش اطلاعات.
      var upquery = (from up in db.tbl_kharids
    where up.id == ID
    select up).SingleOrDefault();

    خیلی ممنون میشم کسی به هم بگه چطور کوئری بنویسم به صورت Linq که بگم آخرین کاربر که در دیتابیس هستش با این نام کاربری چقدر در سیستم قرار داشته ، تاریخ خروج و زمان خروج از سیستم کی بوده. من برای اینکه مدت زمان فرم تو سیستم معلوم بیشه یه تایمر قرار دادم و همچنین یه ساعت که کی از سیستم خارج شده و تاریخ هم قرار دادم ممنون میشم یکی کمک کنه این کورئری رو برای ویرایش اطلاعات آخرین کاربر وارد شده بنویسم خیلی لازم دارم.
    از دیتاگرید ویو استفاده نمکنیم از label استفاده میکنم برای نمایش اطلاعات کاربر وارد شده تو سیستم.
    منظور من همچین کدی می باشد. این کد ado رو چطور به Linq بنویسم.
            void UpdateLastRecord()
    {
    try
    {
    dbm.cmd.CommandText =
    "UPDATE Tbl_InfoLogin SET DateExit = @DateExit, TimetoSystem = @TimetoSystem, TimeExit = @TimeExit WHERE (ID =(SELECT MAX(ID) AS Exper1 FROM Tbl_InfoLogin AS Tbl_InfoLogin_1))";
    dbm.cmd.Parameters.Clear();
    dbm.cmd.Parameters.AddWithValue("@DateExit", LblShortDate.Text);
    dbm.cmd.Parameters.AddWithValue("@TimetoSystem", LblTimer.Text);
    dbm.cmd.Parameters.AddWithValue("@TimeExit", Lbltime.Text);
    dbm.con.Open();
    dbm.cmd.ExecuteNonQuery();
    dbm.con.Close();
    }
    catch (Exception ex)
    {
    if (!ShowFrindMessage)
    PersianMessageBox.Show(ex.Message);
    else
    PersianMessageBox.Show("خطا در اجرا دستورات / خطا 107", "خطا", PersianMessageBox.Buttons.OK,
    PersianMessageBox.Icon.Error);
    }
    }

    خیلی نیاز دارم ممنون میشم کمک کنید من رو.
    آخرین ویرایش به وسیله davidrobert : یک شنبه 12 آبان 1392 در 15:54 عصر

  2. #2

    نقل قول: کد اسکیول به دست آوردن آخرین کاربر وارد شده در سیستم به صورت Linq

    خواهش یکی جواب بنده رو بده.

  3. #3
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: کد اسکیول به دست آوردن آخرین کاربر وارد شده در سیستم به صورت Linq

    سلام
    متاسفانه اینقدر توضیحات زیاد بود که خوندنشو پشمون شدم
    اگر سعی کنید سوالتون رو مختصر و مفید بپرسید فکر می کنم به نتیجه بهتری برسید
    حالا نظر من
    اگر برنامه فقط یک نسخه داره می تونی از Setting.Setting استفاده کنی و در اون میای اطلاعات آخرین یوزر رو آپدیت می کنی
    ولی اگر تحت شبکه هست قضیه فرق میکنه ...
    موفق باشید

  4. #4

    نقل قول: کد اسکیول به دست آوردن آخرین کاربر وارد شده در سیستم به صورت Linq

    برنامه تحت شبکه نیست. برنامه من به این صورت عمل میکنه یک جدول قرار دادم برای ثبت مشخصات کاربر یعنی کاربری که وارد سیستم میشه معلوم باشه که کسی وارد سیستم شده بخاطر همین معلوم بیشه که کسی وارد شده اطلاعات اون کاربر رو در زمان ورود به برنامه ثبت میکنم یعنی وقتی که برنامه باز میشه اطلاعات کاربر وارد شده ثبت میشه. و حالا یه تایمر در برنامه قرار دادم و تو تایمر میخوام بگم آخرین کاربری که وارد شده به سیستم رو بیاد اطلاعات مربوط به تاریخ ، زمان و تایمر رو بر روی همون رکورد ثبت شده قرار بده یا همون ویرایش کنه. یعنی کاربری که وارد سیستم میشه هر 3 ثانیه اطلاعات همون کاربر به روز بیشه.به وسیله ابزار تایمر که قرار دادم. و قتی زمان به تایمر به 3 ثانیه میریسه اطلاعات آخرین کاربری که وارد سیستم شده رو اطلاعات مروبط به ساعت خروج ، تاریخ خروج و تایمری که مدت زمان بودن در سیستم رو مشخص میکنه آپدیت میکنه و وقتی هم شخص از برنامه بخواد خارج بیشه یا برق بره یا هر چیزی دیگه معلوم میشه اون کاربری که وارد سیستم شده چقدر در سیستم بوده. بخاطر همین که معلوم کنم کاربر وارد شده در سیستم چقدر در برنامه بود باید آخرین رکورد رو به دست بیارم که مطلق به همون کاربر باشه. دلیل که نوشتم معلوم بیشه آخرین کاربری که با این شناسه وارد شده این می باشد که این برنامه هم به صورت شبکه هستش و هم نه یعنی 2 تا نسخه میخوام بنویسم بخاطر همین میخواستم آخرین شناسه کاربر وارد شده در سیستم با این نام کاربری معلوم باشه. درست مثل همین کد .ولی تو این کد نام کاربری رو نگفته بلکه فقط اخرین شناسه به دست میاد نه آخرین شناسه این کاربر. این هم کد Ado می باشد .
            void UpdateLastRecord()
    {
    try
    {
    dbm.cmd.CommandText =
    "UPDATE Tbl_InfoLogin SET DateExit = @DateExit, TimetoSystem = @TimetoSystem, TimeExit = @TimeExit WHERE (ID =(SELECT MAX(ID) AS Exper1 FROM Tbl_InfoLogin AS Tbl_InfoLogin_1))";
    dbm.cmd.Parameters.Clear();
    dbm.cmd.Parameters.AddWithValue("@DateExit", LblShortDate.Text);
    dbm.cmd.Parameters.AddWithValue("@TimetoSystem", LblTimer.Text);
    dbm.cmd.Parameters.AddWithValue("@TimeExit", Lbltime.Text);
    dbm.con.Open();
    dbm.cmd.ExecuteNonQuery();
    dbm.con.Close();
    }
    catch (Exception ex)
    {
    if (!ShowFrindMessage)
    PersianMessageBox.Show(ex.Message);
    else
    PersianMessageBox.Show("خطا در اجرا دستورات / خطا 107", "خطا", PersianMessageBox.Buttons.OK,
    PersianMessageBox.Icon.Error);
    }
    }
    private void timUpdate_Tick(object sender, EventArgs e)
    {
    UpdateLastRecord();
    }
    ولی میخواستم این کد Ado رو به Linq تبدیل کنیم ولی نتواستم.

  5. #5

    نقل قول: کد اسکیول به دست آوردن آخرین کاربر وارد شده در سیستم به صورت Linq

    خواهش یکی کمک کنه. خیلی لازم دارم به همچین کدی به زبان لینکیو.

  6. #6
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: کد اسکیول به دست آوردن آخرین کاربر وارد شده در سیستم به صورت Linq

    سلام
    من در نرم افزار به این شکل گزاشتم که یک فیلد در هر جدول به نام مثلا username قرار دادم و در دکمه درج این username که از متغیر میگیره رو در دیتابیس ثبت میکنه در این صورت میشه بعداً هم فهمید که این کاربر چیا ثبت کرده
    البته این نظر منه
    موفق باشید
    آخرین ویرایش به وسیله danialafshari : دوشنبه 13 آبان 1392 در 01:37 صبح

  7. #7

    نقل قول: کد اسکیول به دست آوردن آخرین کاربر وارد شده در سیستم به صورت Linq

    شما کد لاگین و ثبت اطلاعات کاربر ورودی رو بزار. همراه با ساختار جدول لاگ ورود و خروج.

  8. #8

    نقل قول: کد به دست آوردن آخرین کاربر وارد شده در سیستم به صورت Linq

    خیلی ممنون که جواب دادید این سیستم کد نویسی بنده برای ورود به برنامه . به صورت Linq
           private void LoginSystem()
    {

    MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
    byte[] hashedDataBytes;
    UTF8Encoding encoder = new UTF8Encoding();

    string StrPassWord = TxtPassWord.Text;
    hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(StrPassWord ));

    var query = db.Tbl_Users.Where(d => d.UserName == TxtUsers.Text && d.PassWord == hashedDataBytes);
    if (TxtPassWord.Text != "" && TxtUsers.Text != "")
    {
    if (query.Count() != 0)
    {
    Program.User = TxtUsers.Text.ToString();
    FrmMain fm = new FrmMain();
    this.Hide();
    fm.ShowDialog();
    }
    else
    {
    PersianMessageBox.Show("چنین نام کاربری یافت نشود؟", "خطا", PersianMessageBox.Buttons.OK,
    PersianMessageBox.Icon.Error);
    TxtUsers.Text = "";
    TxtPassWord.Text = "";
    }
    }
    else
    {
    PersianMessageBox.Show("نام کاربری یا رمز عبور را وارد فرمایید؟", "خطا", PersianMessageBox.Buttons.OK,
    PersianMessageBox.Icon.Error);
    }
    }

    private void BtnLogin_Click(object sender, EventArgs e)
    {
    LoginSystem();
    }

    این هم کد هم نحوه کد نویسیم در فرم اصلی که اطلاعات نمایش داده بیشه تمام جزیاتش. فقط یه چیزی من در تمام برنامه نمی خوام نمایش اطلاعاتکاربر رو به کار ببرم وقتی دکمه ذخیره زده شد اطلاعات ثبت بیشه فقط در فرم اصلی میخوام به این صورت باشه در Ado نوشتم این نوع کد نویسی خیلی خوب جواب داد.ولی Linq رو تازه شروع کردم بلد نیستم. این هم کد نویسی بنده در صفحه اصلی شامل ، نمایش اطلاعات کاربر و تصویر فقط کد مروبط به قسمت فعال و غیر فعال کردن دکمه رو قرار ندادم چون امدم ذخیره ویرایش و خیلی کاراش رو انجام بدم تا وقتی تمام شد اون امکان رو هم بزارم چون 2 تا دکمه غیر فعال میشن که معلوم نشه برای کاربرن دیگه که کسی وارد شده و کسی نتونه کاربر در سیستم ثبت کنه. کد مبروط به ساعت ، تاریخ که به صورت کلاس از فرم دیگه آمده ، کد مروبط به تایمر برای راه افتادن تامیر در برنامه وقتی 3 ثانیه رسید اطلاعات آخرین کاربر رو ویرایش کنی که تو این ماندم.و کد مروبط به ثبت کار در زمان ورود به برنامه که نوشتم جواب هم میده وقتی طرف وارد میشه اطلاعاتش ثبت میشه در ویرایش تاریخ و زمان خروج و مدت زمان در برنامه هی ویرایش میشن. این هم کد کلی بنده.
    ClsNeedCode clsnd = new ClsNeedCode();
    ClsPersianDate prsDate = new ClsPersianDate(DateTime.Now);
    private static bool showfriendmessageMainUser = true;
    DataBaseDataContext db=new DataBaseDataContext();

    ClsPersianDate prDate=new ClsPersianDate(DateTime.Now);

    public string users = Program.User;

    public void UserShowInfo()
    {
    var query = from myrow in db.Tbl_Users
    where myrow.UserName == users
    select
    new
    {
    user = myrow.UserName,
    sex = myrow.Sex,
    namee = myrow.Name,
    last = myrow.Last,
    showUserInfo = myrow.View_Users_Information,
    RegUserInfo = myrow.View_User_Registration,
    unitt= myrow.Unit
    };
    foreach (var ValueFromQuery in query)
    {
    LblUsers.Text = ValueFromQuery.user;
    LblSex.Text = ValueFromQuery.sex;
    LblName.Text = ValueFromQuery.namee;
    LblLast.Text = ValueFromQuery.last;
    LblUnit.Text = ValueFromQuery.unitt;
    }
    }

    public void GetPic()
    {
    var query = from myrow in db.Tbl_Users
    where myrow.UserName == users
    select Image.FromStream(new MemoryStream(myrow.Photo.ToArray()));
    foreach (Image image in query)
    {
    pictureBox1.Image = (image);
    }
    }

    void SaveUser()
    {
    try
    {
    Tbl_Member_Information_Sheet tbl=new Tbl_Member_Information_Sheet();
    MemoryStream ms=new MemoryStream();
    pictureBox1.Image.Save(ms,System.Drawing.Imaging.I mageFormat.Png);
    byte[] pi = ms.ToArray();
    tbl.sex = LblSex.Text.Trim();
    tbl.Name = LblName.Text.Trim();
    tbl.Last = LblLast.Text.Trim();
    tbl.Photo = pi;
    tbl.Date = LblDateShort.Text;
    tbl.Time = LbLTime.Text;
    tbl.In_Time = LblTimer.Text;
    tbl.Unit = LblUnit.Text;
    db.Tbl_Member_Information_Sheets.InsertOnSubmit(tb l);
    db.SubmitChanges();
    }
    catch (Exception ex)
    {
    if (!showfriendmessageMainUser)
    PersianMessageBox.Show(ex.Message);
    else
    PersianMessageBox.Show("خطا در اجرا دستورات خطا 104", "خطا", PersianMessageBox.Buttons.OK,
    PersianMessageBox.Icon.Error);
    }
    }
    private void FrmMain_Load(object sender, EventArgs e)
    {
    LblDateShort.Text = clsnd.dateshort(DateTime.Now);
    LblDateFull.Text = "آمروز : " + prsDate.CompletePrsDate() + prsDate.taghvim();
    LbLTime.Text = clsnd.TimeFull(DateTime.Now);
    UserShowInfo();
    GetPic();
    SaveUser();
    }

    private void BtnMin_Click(object sender, EventArgs e)
    {
    this.WindowState = FormWindowState.Minimized;
    }

    private void TimOclock_Tick(object sender, EventArgs e)
    {
    LbLTime.Text = clsnd.TimeFull(DateTime.Now);
    }
    public static int si = 0;
    private void TimSayeBan_Tick(object sender, EventArgs e)
    {
    try
    {
    string Lstr = "نرم افزار حسابداری سایه بان";
    if (LblSayeBan.Text.ToString().Length < Lstr.Length)
    {
    LblSayeBan.Text = Lstr.Substring(0, si) + "";
    si += 1;
    }
    else
    {
    LblSayeBan.Text = "";
    si = 0;
    }
    }
    catch
    {

    }
    }
    void Check_Seconds()
    {
    string sec, min;
    sec = LblTimer.Text.Substring(6, 2);
    min = LblTimer.Text.Substring(3, 2);
    if (Convert.ToInt32(sec) < 59)
    if (Convert.ToInt32(sec) < 9)
    sec = "0" + Convert.ToString(Convert.ToInt32(sec) + 1);
    else
    sec = Convert.ToString(Convert.ToInt32(sec) + 1);
    else
    {
    sec = "00";
    Check_Minute();
    }
    LblTimer.Text = LblTimer.Text.Substring(0, 6) + sec;
    }

    void Check_Minute()
    {
    string min, hour;
    min = LblTimer.Text.Substring(3, 2);
    hour = LblTimer.Text.Substring(0, 2);
    if (Convert.ToInt32(min) < 59)
    if (Convert.ToInt32(min) < 9)
    min = "0" + Convert.ToString(Convert.ToInt32(min) + 1);
    else
    min = Convert.ToString(Convert.ToInt32(min) + 1);
    else
    {
    min = "00";
    if (Convert.ToInt32(hour) < 23)
    if (Convert.ToInt32(hour) < 9)
    hour = "0" + Convert.ToString(Convert.ToInt32(hour) + 1);
    else
    hour = Convert.ToString(Convert.ToInt32(hour) + 1);
    else
    hour = "00";
    }
    LblTimer.Text = hour + ":" + min + LblTimer.Text.Substring(5, 3);
    }
    private void TimTimer_Tick(object sender, EventArgs e)
    {
    Check_Seconds();
    }

    void UpdateUser()
    {
    //var query = db.Tbl_Member_Information_Sheets.Max(i => i.ID);
    var query =
    (from up in db.Tbl_Member_Information_Sheets
    where up.ID == db.Tbl_Member_Information_Sheets.Max(i => i.ID)
    select up).SingleOrDefault();
    string _dateOut = LblDateShort.Text;
    string _time = LbLTime.Text;
    string _timer = LblTimer.Text;
    query.Departure_Date = _dateOut;
    query.Time_Out = _time;
    query.In_Time = _timer;
    db.SubmitChanges();
    }
    private void TimUpdate_Tick(object sender, EventArgs e)
    {
    //UpdateUser();
    }

  9. #9

    نقل قول: کد به دست آوردن آخرین کاربر وارد شده در سیستم به صورت Linq

    برای پیدا کردن آبجکتی که خودت ایجاد میکنی نیازی نیست دوباره روی دیتابیس کوئری بزنی. کافیه یک فیلد در این فرم ایجاد کنی و یک ارجاع به اون آبجکت رو نگهداری کنی.

    private Tbl_Member_Information_Sheets _info;
    void SaveUser()
    {
    try
    {
    Tbl_Member_Information_Sheet tbl=new Tbl_Member_Information_Sheet();
    tbl.sex = LblSex.Text.Trim();
    tbl.Name = LblName.Text.Trim();
    tbl.Last = LblLast.Text.Trim();
    tbl.Date = LblDateShort.Text;
    tbl.Time = LbLTime.Text;
    tbl.In_Time = LblTimer.Text;
    tbl.Unit = LblUnit.Text;
    db.Tbl_Member_Information_Sheets.InsertOnSubmit(tb l);
    db.SubmitChanges();

    _info = tbl;
    }
    catch (Exception ex)
    {
    if (!showfriendmessageMainUser)
    PersianMessageBox.Show(ex.Message);
    else
    PersianMessageBox.Show("خطا در اجرا دستورات خطا 104", "خطا", PersianMessageBox.Buttons.OK,
    PersianMessageBox.Icon.Error);
    }
    }

    حالا در متد آپدیت این آبجکت رو اصلاح میکنی و تغییرات رو ذخیره میکنی..

    void UpdateUser()
    {
    if (_info != null)
    {
    string _dateOut = LblDateShort.Text;
    string _time = LbLTime.Text;
    string _timer = LblTimer.Text;
    _info.Departure_Date = _dateOut;
    _info.Time_Out = _time;
    _info.In_Time = _timer;
    db.SubmitChanges();
    }
    }





    من متوجه نشدم چرا عکس رو در جدول Tbl_Member_Information_Sheet ذخیره میکنی. مگر این جدول برای ذخیره اطلاعات ورود و خروج نیست و مگر عکس در جدول Tbl_Users ثبت نشده؟!!

    دو تابع که برای چک کردن ثانیه و دقیقه نوشتی اگر برای دو رقمی کردن هست اضافه است. میتونی از فرمت دهی در متد tostring استفاده کنی.

    تایمرهای زیادی استفاده کردی، چرا؟ هر کدوم چه کاری میکنند؟

  10. #10

    نقل قول: کد به دست آوردن آخرین کاربر وارد شده در سیستم به صورت Linq

    ممنون آقا Mahmoud.Afrad درست شد جواب گرفتم.

تاپیک های مشابه

  1. مبتدی: به دست آوردن ID کاربر لوگین شده
    نوشته شده توسط مهسا صالحی در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 30 مهر 1390, 22:11 عصر
  2. سوال: به دست آوردن آخرین فیلد اضافه شده
    نوشته شده توسط mo_re_s در بخش MySQL
    پاسخ: 1
    آخرین پست: چهارشنبه 25 آذر 1388, 23:30 عصر
  3. تشخیص کشور و مشخصات کاربر وارد شده
    نوشته شده توسط saeed_programer در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: چهارشنبه 13 آبان 1383, 13:01 عصر
  4. آخرین رکورد وارد شده کدومه؟
    نوشته شده توسط mehdi_moosavi در بخش SQL Server
    پاسخ: 2
    آخرین پست: یک شنبه 08 شهریور 1383, 13:07 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •