PDA

View Full Version : ایراد کد



nasiiiiiii
سه شنبه 15 فروردین 1391, 20:40 عصر
دوستان سلام
میشه کمکم کنید تا بفهمم دلیل ارور کد زیر چیه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟:گری ::گریه::گریه:85155

Hybrid
سه شنبه 15 فروردین 1391, 21:05 عصر
سلام ، چرا نمیشه :)

نگا شما اصلا خاصیت DataAdapter.SelectCommand رو مقدار دهی نکردین ، پس نمیشه datatable رو پر کنه و در نتیجه اررور میده

یعنی باید به شکل زیر کد هاتون رو اصلاح کنین :

1 ) اصلا pubsqlCmd اصلا به دردت نمیخوره کلا حذفش کن


کلا باید کدت چیزی به شکل زیر باشه :


DataAdapter.SelectCommand.CommandType = CommandType.Text
DataAdapter.SelectCommand.CommandText = ""
DataAdapter.SelectCommand.Connection = pubSQLCon

If DataAdapter.SelectCommand.Connection.State <> ConnectionState.Open Then
DataAdapter.SelectCommand.Connection.Open()
End If

DataAdapter.SelectCommand.ExecuteNonQuery()

Dim dt As New DataTable
DataAdapter.Fill(dt)

Return dt


pubSQLCon.Close()

کد های جلوی DataAdapter.selectCommand.commantext رو همون کد های بالات قرار بده .

اگه باز هم اشکال داشت کل کد تابع Search رو بزار تا براتون اصلاحش کنم

nasiiiiiii
سه شنبه 15 فروردین 1391, 23:19 عصر
بازم نتونستم:گریه::گریه::گریه::گر ه::گریه::گریه::گریه::گریه::گر ه::گریه:85167

Hybrid
سه شنبه 15 فروردین 1391, 23:29 عصر
این خط کد رو در اولین خط تابع بعد از try وارد کن :


DataAdapter.SelectCommand = New SqlCommand()

nasiiiiiii
چهارشنبه 16 فروردین 1391, 12:23 عصر
کدم درست شد اما تو دیتا گرید ویو چیزی نشون نمی ده؟؟؟؟؟؟؟؟؟؟؟؟:گیج:

Hybrid
چهارشنبه 16 فروردین 1391, 12:28 عصر
کدم درست شد اما تو دیتا گرید ویو چیزی نشون نمی ده؟؟؟؟؟؟؟؟؟؟؟؟:گیج:

سلام دوست عزیز امیدوارم حالت خوب باشه ، احتمالا از تابع به درستی استفاده نمیکنین ، میشه کدی که به وسیلش از تابع استفاده میکنین رو بزارین ، در ضمن کل کد تابع رو هم بزار تا اگه اشکالی داشت واستون درستش کنم

nasiiiiiii
چهارشنبه 16 فروردین 1391, 12:47 عصر
Function Search(ByVal FieldName1 As String, ByVal FieldName2 As String) As DataTable


Try

DataAdapter.SelectCommand =
New SqlClient.SqlCommand()

DataAdapter.SelectCommand.CommandType = CommandType.Text

DataAdapter.SelectCommand.CommandText =
"Select * from TblApartemanForosh Where '" + FieldName1 + "' between '" + Txtgheimatpae.Text + "' And '" + Txtgheimatnahai.Text + "' or '" + FieldName2 + "'between '" + TxtMetrazhPae.Text + "' And '" + TxtMetrazhAkhar.Text + "'"

DataAdapter.SelectCommand.Connection = Pubsqlcon


If DataAdapter.SelectCommand.Connection.State <> ConnectionState.Open Then

DataAdapter.SelectCommand.Connection.Open()


End If

DataAdapter.SelectCommand.ExecuteNonQuery()


Dim dt As New DataTable

DataAdapter.Fill(dt)


Return dt

Pubsqlcon.Close()


Catch ex As SqlClient.SqlException

MsgBox(
" ")


Catch ex As Exception

MsgBox(
" ")


End Try


End Function




Private Sub BtnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSearch.Click

DataGridView1.DataSource = Search(
"GheimatKol", "Metrazh")


End Sub



سلام
دوست کدا رو چه طور بذارم که بهم نریزه؟؟؟

Hybrid
چهارشنبه 16 فروردین 1391, 13:13 عصر
داخل تگ های Code به شکل # هست بزار تا بهم نریزه ،

nasiiiiiii
چهارشنبه 16 فروردین 1391, 13:44 عصر
85182نتونستم داخل تگ بزارم نمی دونم چه طوری؟
85181

Hybrid
چهارشنبه 16 فروردین 1391, 14:26 عصر
سلام ، داخل اس کیو ال دستورش به شکل زیر میشه :


SELECT [ID] as [آی دی]
,[p_name] as [نام]
,[p_fname] as [نام خانوادگی]
,[p_Hazine] as [هزینه]
,[p_Daramad] as [درامد]
FROM [New].[dbo].[Table_1] where ([p_Hazine] between 1 and 100) OR ([p_Daramad] between 9 and 12)

اون علامت های تک کوتیشن رو از دو طرف نام فیلد بردار باید کد جستجوت چیزی شبیه کد زیر باشه :


Function Search(ByVal FieldName As String, ByVal fieldName2 As String) As DataTable
Dim oledbDataAdapter1 As New OleDbDataAdapter
Dim oledbconnection1 As New OleDbConnection
oledbconnection1.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\Database1.accdb"
With oledbDataAdapter1
.SelectCommand = New OleDbCommand()
.SelectCommand.Connection = oledbconnection1
.SelectCommand.CommandType = CommandType.Text
.SelectCommand.CommandText = "Select * from table1 where " & FieldName & " between " & TextBox1.Text & " AND " & TextBox2.Text & _
" OR " & fieldName2 & " Between " & TextBox3.Text & " And " & TextBox4.Text

If .SelectCommand.Connection.State <> ConnectionState.Open Then
.SelectCommand.Connection.Open()
End If

Dim dt As New DataTable
oledbDataAdapter1.Fill(dt)
Return dt
End With

End Function

اگه از کد بالا استفاده میکنی کانکشن استرینگ موجود در اونو از بین ببر و کانکشن استرینگ خودت رو جایگزین کن و به روش مشابه ازش استفاده کن در ضمن باید نوع فیلدهایی که اسمشون رو به پارامتر ارسال میکنی از نوع Number یا biint بزار تا درست کار کنه