PDA

View Full Version : مبتدی: تکراری بودن مقدار بعد از فرا خوانی فانکشن



arman_Delta2002
یک شنبه 30 مرداد 1390, 07:47 صبح
سلام من این فانکشن رو نوشتم و میخوام به 4 خط پی در پی صدا بزنم زمانی که خط 2 رو اجزا میکنم مقدار خط قبلی که صدا زده شده و مقادیر نسبت داده شده هم تقییر میکنه و مقدار جدید میگیره دلیلش چیه ؟:متفکر:


Dim DataAdaptorTemp1 As New OleDb.OleDbDataAdapter
DataAdaptorTemp1.SelectCommand = SelectDBAndPar(FormName, "SQL_Select", SelectedRecord, DataBaseName1)
DataAdaptorTemp1.InsertCommand = SelectDBAndPar(FormName, "SQL_Insert", SelectedRecord, DataBaseName1)
DataAdaptorTemp1.DeleteCommand = SelectDBAndPar(FormName, "SQL_Delete", SelectedRecord, DataBaseName1)
DataAdaptorTemp1.UpdateCommand = SelectDBAndPar(FormName, "SQL_Update", SelectedRecord, DataBaseName1)


در کد بالا مقدار SelectCommand و InsertCommand و DeleteCommand همه مقدار نهایی UpdateCommand رو میگیرن در صورتی که تا قبل از اجرای کد بعدی مقدار نصبت داده شده به خودشون درست جایگرین شده ولی تا کد بعد فرا خوانده میشه کد قبل هم که مثلا DataAdaptorTemp1.InsertCommand باشه تقییر مکته مقدارش چرا؟
اینم تابع

Public Function SelectDBAndPar(ByVal FormName As String, ByVal FildName As String, ByVal SelectedRecord As String, ByVal DatabaseName1 As String) As OleDb.OleDbCommand
SQLParametrFinderCommand2.Connection = DbConnection1
SQLParametrFinderCommand1.Connection = DbConnection1
Dataset_ReadSQLSelecte1.Clear()
D_Base_FormsCommandSelect.CommandType = CommandType.Text
D_Base_FormsCommandSelect.CommandText = "Select * from D_Base_Forms Where FormName Like '%" & FormName & "%'"
D_Base_FormsCommandSelect.Connection = DbConnection1
D_Base_FormsCommandSelect.ExecuteNonQuery()
DataAdapterD_Base_Forms1.SelectCommand = D_Base_FormsCommandSelect
DataAdapterD_Base_Forms1.Fill(Dataset_ReadSQLSelec te1, "D_Base_Forms")
D_Sub_Forms_DBCommandSelect.CommandType = CommandType.Text
D_Sub_Forms_DBCommandSelect.CommandText = "Select * from D_Sub_Forms_DB where L_D_Forms =" & Val(Dataset_ReadSQLSelecte1.Tables("D_Base_Forms").Rows(0)("ID")) & " And Name1 Like '%" & SelectedRecord & "%'"
D_Sub_Forms_DBCommandSelect.Connection = DbConnection1
D_Sub_Forms_DBCommandSelect.ExecuteNonQuery()
DataAdapterD_Base_Forms_ObjectSub1.SelectCommand = D_Sub_Forms_DBCommandSelect
DataAdapterD_Base_Forms_ObjectSub1.Fill(Dataset_Re adSQLSelecte1, "D_Sub_Forms_DB")
Dim ae As String = Dataset_ReadSQLSelecte1.Tables("D_Sub_Forms_DB").Rows(0)(FildName).ToString
SQLParametrFinderCommand2.CommandText = "SELECT top 1 * FROM " & DatabaseName1
SQLParametrFinderCommand1.CommandText = ae
SQLParametrFinderDataAdaptor1.SelectCommand = SQLParametrFinderCommand2
Dim tt As Type = GetType(System.Decimal) ' or whatever
Dim dbt As DbType = CType(System.Enum.Parse(GetType(DbType), tt.Name), DbType)
Dim AnserSerch As Integer
AnserSerch = InStr(ae, "@")
If AnserSerch <> 0 Then
SQLParametrFinderDataAdaptor1.Fill(SQLParametrFind erDataSet1, DatabaseName1)
Dim I As Integer
For I = 0 To SQLParametrFinderDataSet1.Tables(DatabaseName1).Co lumns.Count - 1
SQLParametrFinderCommand1.Parameters.Add(New OleDb.OleDbParameter("@" & SQLParametrFinderDataSet1.Tables(DatabaseName1).Co lumns(I).ColumnName, GetDbTypeOleDB(SQLParametrFinderDataSet1.Tables(Da tabaseName1).Columns(I).DataType)))
Next
End If
Return SQLParametrFinderCommand1
End Function