PDA

View Full Version : سوال: ثبت چند رکورد در جدولی در دیتاست در حالت Design بدون ثبت در پایگاه داده



salmanbnd
یک شنبه 30 آبان 1389, 02:16 صبح
سلام دوستان
من می خوام یه جدولی تو دیتاست (در حالت Design) داشته باشم که چندتا رکورد (در حالت Design) توش ثبت کنم و کاری هم به پایگاه داده نداشته باشه. یعنی این رکوردهایی که ثبت می کنم نمی خوام تو یه جدولی تو پایگاه داده ذخیره بشه.
قبلا این کارو کردم، ممنون میشم راهنماییم کنید.
اگه نیاز به توضیح داره بفرمایید تا بیشتر توضیح بدم.

nosrati1363
یک شنبه 30 آبان 1389, 02:56 صبح
سلام
حالا چرا دیتاست؟ اگه فقط میخوای یه جدول از داده های دلخواه داشته باشی نیازی به دیتاست نداری . دیتاتیبل کارتو راه میندازه . باید به تعداد فیلدهایی که لازم داری DataColumn بسازی و بعد اونارو به یه جدول پاس بدی . حالا میتونی یه Row جدید ایجاد کنی و فیلد هات رو مقدار بدی




Public Class Form1

Dim table As DataTable

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub

Private Sub CreateNewDataRow()
' Use the MakeTable function below to create a new table.
table = MakeNamesTable()

' Once a table has been created, use the
' NewRow to create a DataRow.
Dim row As DataRow
row = table.NewRow()

' Then add the new row to the collection.
row("fName") = "John"
row("lName") = "Smith"
table.Rows.Add(row)

Dim column As DataColumn
For Each column In table.Columns
Console.WriteLine(column.ColumnName)
Next
End Sub

Private Function MakeNamesTable() As DataTable
' Create a new DataTable titled 'Names.'
Dim namesTable As DataTable = New DataTable("Names")

' Add three column objects to the table.
Dim idColumn As DataColumn = New DataColumn()
idColumn.DataType = System.Type.GetType("System.Int32")
idColumn.ColumnName = "id"
idColumn.AutoIncrement = True
namesTable.Columns.Add(idColumn)

Dim fNameColumn As DataColumn = New DataColumn()
fNameColumn.DataType = System.Type.GetType("System.String")
fNameColumn.ColumnName = "Fname"
fNameColumn.DefaultValue = "Fname"
namesTable.Columns.Add(fNameColumn)

Dim lNameColumn As DataColumn = New DataColumn()
lNameColumn.DataType = System.Type.GetType("System.String")
lNameColumn.ColumnName = "LName"
namesTable.Columns.Add(lNameColumn)

' Create an array for DataColumn objects.
Dim keys(0) As DataColumn
keys(0) = idColumn
namesTable.PrimaryKey = keys

' Return the new DataTable.
MakeNamesTable = namesTable
End Function
End Class



اگه مشکل داشتی بپرس و اگه مشکلت حل شد ( خواهش میکنم نیازی به تشکر نیست :لبخند: )

salmanbnd
یک شنبه 30 آبان 1389, 20:07 عصر
سلام دوست عزیز
ممنون بابت راهنمایی که کردید اما . . .
نمی دونم چرا توجه نکردید که من سه بار تو پست قبلی عرض کردم "در حالت Design"
در حالت طراحی میخوام این کارو انجام بدم. یعنی نمیخوام کدی واسش بنویسم که تو حالت اجرا اون کدها اجرا بشن.
اگه نیاز به توضیح داره بفرمایید تا بگم

nosrati1363
یک شنبه 30 آبان 1389, 21:31 عصر
سلام . درسته من منظورت رو درست درک نکردم
اما چند نکته :
1 - شما حتی وقتی یک کنترل رو به فرمت اضافه میکنی ( در حالت Design ) انگار با کد نویسی اونرو اضافه کردی اما کار کد نویسی رو خود ویژوال استودیو انجام میده ( میتونی اینرو در Init ببینی )
2 - مقدار دهی هم دقیقا به همین صورته . یعنی اگه به یه خاصیتی مقدار اولیه بدی باز هم تو کد نویسی اینکارو کردی اما با ابزار Visual
اما در مورد حل مشکلت از Tool Box در Tab . Data یک DataSet به فرمت اضافه کن . در موقع اضافه شدن گزینه UnTyped رو انتخاب کن . وقتی DataSet اضافه شد اونو انتخاب کن و ازش Properties بگیر . در Properties میتونی در خاصیت Table یک Table به اون اضافه کنی و در ادامه در خاصیت هایی که در سمت راست میبینی میتونی به جدول ستون اضافه کنی . بعد از این کار در خاصیت Default Valve هر ستون میتونی مقدار اولیه بهش بدی یا اونو تغییر ندی
اما در ادامه بحث برمیگردیم به همون مورد 2
یعنی برای ایجاد رکورد حتما و باید کد بنویسی و به جدول Data Row اضافه کنی در غیر این صورت یک جدول خالی داری با ترکیب مشخص شده
حتی خود VB هم در رویداد Fill هر Data Adapter به ازای رکورد های پایگاه داده یک Data Row به جدول Data Set اضافه میکنه
دیگه از این بیشتر بلد نیستم توضیح بدم:گیج:

salmanbnd
دوشنبه 01 آذر 1389, 08:51 صبح
سلام دوست خوبم
ممنون از راهنماییتون
به نکات جالبی اشاره کردید که از اونها اطلاع دارم
از دوستان دیگه کسی هست که بدونه چطور می تونم چند رکورد در حالت طراحی ثبت کنم؟ به قول دوستمون خود ویژوال استادیو خودش این کارو انجام بده؟