PDA

View Full Version : سوال: نحوه ایجاد کد پیگیری



HOJAT1
دوشنبه 04 مهر 1390, 21:01 عصر
سلام.اقا من یه پروه رو ثبت میکنم حالا می خوام به کاربر یه کد پیگیری بدم .حالا به نظر خودم ID رو باید بهش نشون بدم منتها این ID رو چزوری وقتی کاربر پرونده رو ثبت کرد از بانک بخونه و اونو به عنوان کد پیگیری نشون بده؟
اگه بگم اخرین رکورد رو ایدیش رو بهش نشون بده ممکنه چند کاربر بطور همزمان دارن کار میکنم اخرین رکورد اشتباهی به یکی دیگه داده بشه.
اگه روش دیگه ای هم باشه که چه بهتر.
ممنون میشم با کد بگید.

Esmail Solhkhah
سه شنبه 05 مهر 1390, 01:03 صبح
سلام حجت جان

ID رو Identity گرفتید ؟

HOJAT1
سه شنبه 05 مهر 1390, 01:15 صبح
سلام اسماعیل جان شبت بخیر.
بله Identity گرفتم.

Esmail Solhkhah
سه شنبه 05 مهر 1390, 01:18 صبح
خب اگه احیانا از تایپ دیتاست استفاده میکنی

MainDataSet.KalaRow KalaRow = mainDataSet.Kala.NewKalaRow();

KalaRow.VahedId = 1;

KalaRow.Name = "RAM";

mainDataSet.Kala.AddKalaRow(KalaRow);

kalaTableAdapter.Update(KalaRow);

MessageBox.Show(KalaRow.Id.ToString());

هر دیتارو بعد از آپدیتش مقدار واقعی ID مربوطه رو برمیگردونه (با فرض وجود فیلد Id بصورت Identity)

reza_magical
سه شنبه 05 مهر 1390, 01:19 صبح
سلام
یا باید کد پیگیری رو خودت دستی بدی ، یا اینکه فیلد دیتابیس رو Auto کنی ، یا اینکه یه تابع بنویسی که برات کد Random تولید کنه.
من این چند روش به ذهنم میرسه ، ممکنه بازم راههای بهتری باشه.

HOJAT1
سه شنبه 05 مهر 1390, 01:26 صبح
اسماعیل جان نمونه پروژه رو میزارم اگه میشه اینو اصلاح کنید.مرسی

HOJAT1
سه شنبه 05 مهر 1390, 01:36 صبح
75841
این یه پروژه نمونه میخوام موقع ثبت تو فرم 2 جای لیبل کد رهگیری رو نشون بدم
نام دیتابیس test
نام تیبل Tbltest
نام فیلد ها id ,esi,poria
هه ببخشید از دیتا بیس اماده که داشتم استفاده کردم اسماش اینا بود.
مرسی

Esmail Solhkhah
سه شنبه 05 مهر 1390, 01:56 صبح
حجت جان چون شما برا اینسرت کد مستقم SQL نوشتید راهکار استفاده از

@@Identity

هست

http://msdn.microsoft.com/en-us/library/ms187342.aspx

موفق باشید.

HOJAT1
سه شنبه 05 مهر 1390, 02:13 صبح
اسماعیل جان خیلی خیلی ممنون.من اگه بخوام ی با یه تابع رندوم هم یه کد 4 رقمی به این ایدی اضافه کنم کجا باید اینو بزنم؟
راستی این لینک رو نتونستم باز کنم.

HOJAT1
سه شنبه 05 مهر 1390, 02:20 صبح
راستی یه چیز دیگه اینکه اگر دو کاربر همزمان دکمه ثبت رو بزنن ایا این اشتباه رخ نمی ده که کد پیگیری اشتباه برا یکی انتخاب بشه؟ اگه هست راه حل چطوری میشه؟

Esmail Solhkhah
سه شنبه 05 مهر 1390, 02:28 صبح
اگه بخوام ی با یه تابع رندوم هم یه کد 4 رقمی به این ایدی اضافه کنم کجا باید اینو بزنم؟
public partial class Form2 : Form
{

Random random = new Random(1);

public Form2()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
int i = random.Next(1000, 9999);

MessageBox.Show(i.ToString());
}
}



راستی یه چیز دیگه اینکه اگر دو کاربر همزمان دکمه ثبت رو بزنن ایا این اشتباه رخ نمی ده که کد پیگیری اشتباه برا یکی انتخاب بشه؟ اگه هست راه حل چطوری میشه؟ احتمال اینکه دو کاربر بصورت همزمان تو دو برنامه تحت شبکه یه ثبت رو همزمان بزنن نمیگم نیس ، کمه

خود ثبت رو در نظر بگیرید که دستور اینسرت شما داره بصورت پکتهای شبکه به طرف سرور ارسال میشه و در چه

زمانی SQL SERVER اونو میگیره و پردازش میکنه ، دو ثبت اگه از لحاظ تئوری در نظر بگیرید باید با تاخیر زمانی صفر نسبت به هم توسط SQL SERVER پردازش بشن تا این مورد پیش بیاد


راستی این لینک رو نتونستم باز کنم.

مورد لینک چیه که باز نمیشه ، لینک معتبره

HOJAT1
سه شنبه 05 مهر 1390, 03:27 صبح
اقا می خوام فیلد PGER رو تو لیبلم به عنوان کد پیگیری بزنم چزوری میشه؟

decimal

number = 0;


int i = random.Next(1000, 9999);


int B = random.Next(10000, 99999);

cm =
new SqlCommand("insert into tblname(name,family,PIGIR) values ('" + txt1.Text + "','" + txt2.Text + "','" + i.ToString()+ "" +B.ToString()+ "')", connection);


if (connection.State != ConnectionState.Open)

connection.Open();

cm.ExecuteNonQuery();

cm.CommandText =
"SELECT PIGIR FROM tblname '";


SqlDataReader dr = cm.ExecuteReader();


if (dr.Read())

number = dr.GetDecimal(0);

dr.Close();