PDA

View Full Version : حلقه for



fereshtehrahimi
شنبه 25 خرداد 1387, 14:16 عصر
سلام
چه طور مي تونم براي ديتاستم يك حلقه for
بنويسم تا روي فيلد هاي آن يك عمليات محاسباتي انجام بده (مهم حلقه for)
لطفا كمكم كنيد

ali_md110
شنبه 25 خرداد 1387, 16:12 عصر
Dim int1 As Integer = 0
Dim int2 As Integer = 0
For i As Integer = 0 To DS.Tables("MYTBL").Rows.Count - 1
int1 = DS.Tables("MYTBL").Rows(i).Item(0)
int2 = DS.Tables("MYTBL").Rows(i).Item(1)

Next

parsavb
یک شنبه 26 خرداد 1387, 08:29 صبح
ببخشید ولی فکر کنم که برای این گونه موارد از حلقه های For Each و do while استفاده کنید بهتره
چون برای این موارد طراحی شده اند

fereshtehrahimi
چهارشنبه 29 خرداد 1387, 11:34 صبح
ممكن بيشتر راهنماييم كنيم مخوصوصا در مورد ساخت dataset datatable و پر كردن آنها
اگه يه نمونه كد بگذاريد خيلي ممنون مي شم

NewFoxStudent
چهارشنبه 29 خرداد 1387, 11:49 صبح
Dim SqlDA As New SqlDataAdapter, SqlDS As New DataSet, Sql As New clsSql
Dim SqlCmd AsNew SqlCommand, SqlCon AsNew SqlConnection, tb_Name AsString
SqlCon.ConnectionString = "Data Source=CLIENT1;Initial Catalog=Tetsa;User ID=sa;Password=master;Connect TimeOut = 10"
SqlCon.Open()
SqlCmd.Connection = SqlCon
SqlConnect()
Sql.SqlReader = Sql.SqlSelect("Select Table_Name From Information_Schema.Tables Where Table_Type = 'Base Table' AND Table_Name != 'dtProperties'")
DoWhile Sql.SqlReader.Read
tb_Name = Sql.SqlReader("Table_Name")
SqlDA.SelectCommand = SqlCmd
SqlDA.SelectCommand.CommandText = "Select * From " + tb_Name
SqlDA.Fill(SqlDS, tb_Name)
Loop

NewFoxStudent
چهارشنبه 29 خرداد 1387, 11:53 صبح
اینم کلاس clsSql
در کد قبلی متغیر Sql از نوع این کلاس تعریف شده



PublicClass clsSql
Public CSQL AsNew SqlClient.SqlConnection, SqlCommand AsNew SqlClient.SqlCommand, SqlReader As SqlClient.SqlDataReader
Public SqlDA AsNew SqlClient.SqlDataAdapter, SqlDS AsNew Data.DataSet, SqlDT As DataTable
PublicSub Connect()
CSQL.ConnectionString = "Data Source=CLIENT1;Initial Catalog=Tetsa;User ID=sa;Password=master;Connect TimeOut = 50"
CSQL.Open()
EndSub
PublicFunction SqlInsert(ByVal Command AsString) AsInteger
SqlCommand.CommandType = CommandType.Text
SqlCommand.Connection = CSQL
SqlCommand.CommandText = Command
SqlInsert = SqlCommand.ExecuteNonQuery()
EndFunction
PublicFunction SqlUpdate(ByVal Command AsString) AsInteger
SqlCommand.CommandType = CommandType.Text
SqlCommand.Connection = CSQL
SqlCommand.CommandText = Command
SqlUpdate = SqlCommand.ExecuteNonQuery()
EndFunction
PublicFunction SqlDelete(ByVal Command AsString) AsInteger
SqlCommand.CommandType = CommandType.Text
SqlCommand.Connection = CSQL
SqlCommand.CommandText = Command
SqlDelete = SqlCommand.ExecuteNonQuery()
EndFunction
PublicFunction SqlSelect(ByVal Command AsString) As SqlClient.SqlDataReader
SqlCommand.CommandType = CommandType.Text
SqlCommand.Connection = CSQL
SqlCommand.CommandText = Command
SqlSelect = SqlCommand.ExecuteReader()
EndFunction
PublicFunction SqlExecute(ByVal Command AsString) AsString
SqlCommand.CommandType = CommandType.Text
SqlCommand.Connection = CSQL
SqlCommand.CommandText = Command
SqlExecute = SqlCommand.ExecuteNonQuery().ToString
EndFunction
PublicSub SqlClose()
SqlCommand.Dispose()
CSQL.Close()
CSQL.Dispose()
EndSub
PublicSub SqlCloseReader()
SqlReader.Close()
EndSub
PublicSub exec_Proc(ByVal procName AsString)
SqlCommand.CommandType = CommandType.StoredProcedure
SqlCommand.Connection = CSQL
SqlCommand.CommandText = procName
SqlCommand.ExecuteNonQuery()
EndSub
EndClass

NewFoxStudent
چهارشنبه 29 خرداد 1387, 12:01 عصر
کدهای بالا لیست جداول یک دیتابیس SQL Server رو توی یک دیتا ریدر میاره
و بعد تمام رکورد های هر جدول رو هم توی یه دیتاآداپتر کپی میکنه
به هر حال شما میتونید برای انجام عملیات روی تک تک رکورد ها از Reader.read استفاده کنید

fereshtehrahimi
پنج شنبه 30 خرداد 1387, 19:29 عصر
ممنون از لطف شما دوستان عزيز كه من را راهنمايي كرديد
مشكل من با كد زير حل شد

Sub Main()
Dim strConn, strSQL As String
Dim WHERE As String
WHERE = "mah Like N'" & Combotarikh.Text & "%' and sal Like N'" & txtsal.Text & "%' "
strConn = "Initial Catalog=emtiazekol;data source= localhost;integrated security=sspi;"
strSQL = "SELECT * FROM tblcal where " & WHERE
Dim da As New SqlDataAdapter(strSQL, strConn)
Dim ds As New DataSet()
da.Fill(ds)

Dim tbl As DataTable = ds.Tables(0)
Dim int1 As Integer = 0
Dim int2 As Integer = 0
Dim int3 As Integer
Dim int4 As Integer = 0
Dim int5 As Integer = 0
Dim int7 As Integer
For i As Integer = 0 To ds.Tables(0).Rows.Count - 1

int1 = int1 + ds.Tables(0).Rows(i).Item(24)
int2 = int2 + 1
int3 = Val(int1) / Val(int2)
If Val(ds.Tables(0).Rows(i).Item(24)) < int3 Then
int4 = int4 + 1
int5 = int5 + ds.Tables(0).Rows(i).Item(24)
int7 = Val(int5) / Val(int4)


End If

Next
TextBox13.Text = Val(int2)
TextBox9.Text = Val(int1)
TextBox8.Text = Val(int3)
TextBox7.Text = Val(int4)
TextBox12.Text = Val(int5)
TextBox11.Text = Val(int7)
PubSqlCom.CommandText = "UPDATE tblcal SET vazeyat =N'" & TextBox6.Text & "' where ekt>=" & TextBox8.Text
PubSqlCom.Connection = PubSqlCon
If PubSqlCon.State = ConnectionState.Closed Then PubSqlCon.Open()
PubSqlCom.ExecuteReader()
If PubSqlCon.State = ConnectionState.Open Then PubSqlCon.Close()

PubSqlCom.CommandText = "UPDATE tblcal SET vazeyat =N'" & TextBox5.Text & "' where ekt<'" & TextBox8.Text & "' and ekt>='" & TextBox11.Text & "'"
PubSqlCom.Connection = PubSqlCon
If PubSqlCon.State = ConnectionState.Closed Then PubSqlCon.Open()
PubSqlCom.ExecuteReader()
If PubSqlCon.State = ConnectionState.Open Then PubSqlCon.Close()

PubSqlCom.CommandText = "UPDATE tblcal SET vazeyat =N'" & TextBox10.Text & "' where ekt<'" & TextBox11.Text & "'"
PubSqlCom.Connection = PubSqlCon
If PubSqlCon.State = ConnectionState.Closed Then PubSqlCon.Open()
PubSqlCom.ExecuteReader()
If PubSqlCon.State = ConnectionState.Open Then PubSqlCon.Close()



End Suba