PDA

View Full Version : مبتدی: توليد عدد براي شناسه



hamideh_m
شنبه 21 اردیبهشت 1392, 00:03 صبح
سلام به همه
من براي فيلد شناسه كاربر از يك تابع استفاده ميكردم

Try
con.Open()
cmd.CommandText = "select " & Fieldname & " from " & Tablename & " Order by 1 Desc "
dr = cmd.ExecuteReader
If dr.Read = True Then
AutoID = Microsoft.VisualBasic.Right(dr(0), 4) + 1
Else
AutoID = 1
End If
dr.Close()
Catch ex As Exception
MsgBox(ex.Message.ToString)
Finally
con.Close()
End Try
و تو سي شارپ مجبور شدم ازين كد استفاده كنم چون بالايي و قبول نميكنه

String mSql = String.Concat("Select " , fld , " from " , tbl , " order by " , fld );

SqlDataAdapter tAd = new SqlDataAdapter(mSql,myCon);
DataSet tDs = new DataSet();
tAd.Fill(tDs, "orders");
int mCount = tDs.Tables["orders"].Rows.Count;
String tNo;
if (mCount > 0)
{ tNo = tDs.Tables["orders"].Rows[mCount-1][fld].ToString();

tNo = tNo.PadLeft(4, '0');
}
else
tNo = "0001";


return tNo;
}
ولي ازtno ايراد ميگيره من چه كدي بزنم كه وقتي كاربر جديد ميخاد ثبت نام كنه ليبل كد عضويت بطور خودكار با يك كد پر بشه يا حتي موقع اينزرت:ناراحت::ناراحت::نارا ت::ناراحت::ناراحت::ناراحت::ن راحت:

mojtaba5
شنبه 21 اردیبهشت 1392, 00:07 صبح
از تابع رندوم استفاده کن.

hamideh_m
شنبه 21 اردیبهشت 1392, 00:14 صبح
ميشه با مثال توضيح بديد ممنون؟:ناراحت:

_behnam_
شنبه 21 اردیبهشت 1392, 00:35 صبح
دوست من چرا از auto ID خود SQL استفاده نمیکنی؟
به صورت اتوماتیک شماره گذاری میکنه.

hamideh_m
شنبه 21 اردیبهشت 1392, 00:39 صبح
آشناييي ندارم چه جوريه؟:ناراحت:

khokhan
شنبه 21 اردیبهشت 1392, 01:20 صبح
آشناييي ندارم چه جوريه؟:ناراحت:

سلام

یه ستون مخصوص آی دی توی بانک تعریف می کنی

بعد توی برنامه یه متد تعریف می کنی تا آخرین عدد ثبت شده به عنوان آی دی رو از بانک می خونه و یه دونه می ذاره روش و عدد حاصل رو به عنوان آدی جدید توی لیبل نشون می ده

در مرحله بعد هنگام ذخیره اطلاعات اون آی دی داخل لیبل رو هم ثبت می کنی

دفعه بعد که می خوای یه کاربر جدید ثبت کنی همین رویه تکرار می شه الی ماشا ا... :لبخند:

اینطوری :


public string newid()
{
string AtCnt;
command = new SqlCommand();
con = new SqlConnection(connect);
con.Open();
command.CommandType = CommandType.Text;
command.CommandText = "select max(substring(BID,4,5)) from BRAND (nolock)";
command.Connection = con;
AtCnt = Convert.ToString(command.ExecuteScalar());
con.Close();
return AtCnt;
}
void BIDMAKE()
{
label5.Text = "";
int NewId = 1;
string strnewid = " ";
object obj = newid(); //DataSet Invoke from DBConnection class
if (obj.ToString() != "")
{
NewId = Convert.ToInt32(obj.ToString()) + 1;
strnewid = NewId.ToString();
strnewid = strnewid.PadLeft(4, '0');
label4.Text = strnewid;
}
else
{
label4.Text = "0001";
}
}

_behnam_
شنبه 21 اردیبهشت 1392, 07:04 صبح
آشناييي ندارم چه جوريه؟:ناراحت:
کافیه یک ستون ID بسازید از نوع int و مثل عکس زیر مقدار دهی کنید.

104014

m.j_banitaba
شنبه 21 اردیبهشت 1392, 08:46 صبح
Guid.NewGuid

hamideh_m
شنبه 21 اردیبهشت 1392, 13:45 عصر
سلام

یه ستون مخصوص آی دی توی بانک تعریف می کنی

بعد توی برنامه یه متد تعریف می کنی تا آخرین عدد ثبت شده به عنوان آی دی رو از بانک می خونه و یه دونه می ذاره روش و عدد حاصل رو به عنوان آدی جدید توی لیبل نشون می ده

در مرحله بعد هنگام ذخیره اطلاعات اون آی دی داخل لیبل رو هم ثبت می کنی

دفعه بعد که می خوای یه کاربر جدید ثبت کنی همین رویه تکرار می شه الی ماشا ا... :لبخند:

اینطوری :


public string newid()
{
string AtCnt;
command = new SqlCommand();
con = new SqlConnection(connect);
con.Open();
command.CommandType = CommandType.Text;
command.CommandText = "select max(substring(BID,4,5)) from BRAND (nolock)";
command.Connection = con;
AtCnt = Convert.ToString(command.ExecuteScalar());
con.Close();
return AtCnt;
}
void BIDMAKE()
{
label5.Text = "";
int NewId = 1;
string strnewid = " ";
object obj = newid(); //DataSet Invoke from DBConnection class
if (obj.ToString() != "")
{
NewId = Convert.ToInt32(obj.ToString()) + 1;
strnewid = NewId.ToString();
strnewid = strnewid.PadLeft(4, '0');
label4.Text = strnewid;
}
else
{
label4.Text = "0001";
}
}

از AtCnt ايراد ميگيره
{"Argument data type bigint is invalid for argument 1 of substring function."}

amir200h
شنبه 21 اردیبهشت 1392, 14:19 عصر
یه تکست باکس بزار به نام txtid بعد کد زیرو توی یه باتن بزار


SqlDataAdapter da = new SqlDataAdapter("SELECT MAX(ID)+1 FROM name jadval", "server=(local);database=name bank;trusted_connection=yes");
DataSet ds = new DataSet();
da.Fill(ds);
txtid.Text = ds.Tables[0].Rows[0][0].ToString();

khokhan
شنبه 21 اردیبهشت 1392, 19:12 عصر
از AtCnt ايراد ميگيره
{"Argument data type bigint is invalid for argument 1 of substring function."}

بفرما این هم نمونه با بانک sql :لبخند:

hamideh_m
شنبه 21 اردیبهشت 1392, 19:37 عصر
مرسي خيلي ممنون