PDA

View Full Version : چه جوري آخرين كوردي كه ثبت شده را بدست اوريم؟



s.k711
دوشنبه 29 مهر 1387, 23:47 عصر
سلام دوستان.
من در برنامم يك فرم ورود اطلاعات دارم كه نياز دارم هربار كه برنامه ران ميشه وقتي اطلاعات را ثبت ميكنم يك كد بده كه شماره اخرين ركوردي باشه كه ثبت شده بعدا با اين كددر فرمهاي ديگم كار دارم.
به نظر شما چه روشي بهتر است.
(در ضمن من سرچ كردم اما نتيجه اي به دست نياوردم:ناراحت:)
خيلي ممنون.

Sub Zero
سه شنبه 30 مهر 1387, 08:17 صبح
روشهای مختلفی برای این کار هست
دستور Sql اش به این صورته :

Select Count(*) From TableName
بعد با متد ExecuteScalar اجراش کنید .

davoodrm666_666
سه شنبه 30 مهر 1387, 08:35 صبح
اون جدولی که اطلاعات توش میریزی اصولا باید یک کلید اصلی داشته باشه که احتمالا identity هم هست
پس به راحتی select Max(Serial) from TblName
اگر جدول شما کلید نداره که همونطوری که subzero گفتن می شه
اما جدول بدون کلید درست نیست وحتما باید کلید اصلی داشته باشه

arsalansalar
سه شنبه 30 مهر 1387, 08:50 صبح
یک فیلد id که نوعش autonumber هست درست کند بد کد زیر و تو load برنامت بنویس:

con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\db.mdb")
con.Open()
Dim da As New OleDbDataAdapter("select id from table order by id desc ", con)
Dim ds As New DataSet
da.Fill(ds, "table")
DataGrid1.DataSource = ds
DataGrid1.DataMember = "table"
'''''' کد زیر آخرین شماره رو تو تکست باکس برمیگرداند '''''''
textbox1.Text = DataGrid1(DataGrid1.CurrentRowIndex, 0).ToString.Trim

کم حوصله
سه شنبه 30 مهر 1387, 10:10 صبح
سلام

کافی است در سمت دیتابیس خود در پروسیجر درج خود این کد را بنویسید


SELECT SCOPE_IDENTITY()


مثال



Create Proc Ins @Id as int, @Name as varchar(50)
AS
Insert Into TblPerson (ID, Name)
Values (@ID, @Name)

SELECT SCOPE_IDENTITY()

GO

کم حوصله
سه شنبه 30 مهر 1387, 10:11 صبح
البته ناگفته نماند این در زمانی استفاده می شود که فیلد کلید شما Identity باشد

s.k711
دوشنبه 06 آبان 1387, 11:17 صبح
سلام دوستان؛ ممنون از توجه و حوصله و مخصوصا را هنماييهاي با ارزشتون.:قلب:
اساتيد محترم اگه بخواهم شماره آخرين ركوردي كه ذخيره كرده ام را نشان بدم بايد چه كاركنم؟
ايا اين كد صحيح است::متفکر:
( اين را تو قسمت لود صفحه گذاشتم)




Dim de As Integer

Dim dr As SqlDataReader
con.Open()
Label1.AutoSize = True

Dim st20 As String

st20 = "select Max(id) AS m from test1"

Dim cmd As New SqlCommand(st20, con)
dr = cmd.ExecuteReader()
de = dr("m")
Label1.Text = de.ToString
dr.Close()
con.Close()

arsalansalar
دوشنبه 06 آبان 1387, 11:51 صبح
سلام دوستان؛ ممنون از توجه و حوصله و مخصوصا را هنماييهاي با ارزشتون.:قلب:
اساتيد محترم اگه بخواهم شماره آخرين ركوردي كه ذخيره كرده ام را نشان بدم بايد چه كاركنم؟
ايا اين كد صحيح است::متفکر:
( اين را تو قسمت لود صفحه گذاشتم)



Dim

de AsInteger

Dim dr As SqlDataReader
con.Open()
Label1.AutoSize = True
Dim st20 AsString
st20 =


"select Max(id) AS m from test1"

Dim cmd AsNew SqlCommand(st20, con)
dr = cmd.ExecuteReader()
de = dr("m")
Label1.Text = de.ToString
dr.Close()
con.Close()

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

کم حوصله
سه شنبه 07 آبان 1387, 09:06 صبح
سلام
دوست عزیز اگر برنامه شما تحت شبکه کار می کند سعی کنید حتما فیلد کلید خود را Identity تعریف کرده و از دستور برگرداندن آن استفاده کنید به این دلیل که امکان دارد همزمان 2 یا چند کاربر اطلاعات را وارد کنند در نتیجه وقتی شما max می گیرید آی دی آخرین رکورد را برمی گرداند در صورتی که رکورد ایجاد شده توسط شما (به طور فرض) Max - 2 می باشد.

s.k711
سه شنبه 07 آبان 1387, 10:32 صبح
سلام دوستان خيلي ممنون از راهنماييهاتون، اما اگه ممكنه يك كد بدون استفاده از datagrid بدين تا من بتونم از اون استفاده كنم .
datagrid فضاي فرمم را اشغال ميكنه.حتي وقتي visible را false ميكنم.
چه جوري توي يك label شماره اخرين ركوردي كه ذخيره شده را نشون بدم.
بازم ممنون.:لبخندساده::لبخندساده :