Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / проблемы с натройкой DataGrid в ручную / 5 сообщений из 5, страница 1 из 1
23.01.2007, 11:26
    #34274468
MeduzKA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с натройкой DataGrid в ручную
подскажите,плиз,как исправить ошибку-
необходимо чтобы в DataGrid выводилась не вся таблица,а выполнялось условие select,у меня выдаеться ошибка

Dim kod_pomel As String
kod_pomel = item_Kod_pomel() 'выбранный код завода

Dim str As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\Project117Form\db117.mdb"
Dim cnn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(str)
cnn.Open()
Dim strSelect As String = "select *from Bazis_pomel where (id = ?)"
'cmd.Parameters.Add("@kod_pomel", OleDbType.Char).Value = kod_pomel
Dim dscmd As New System.Data.OleDb.OleDbDataAdapter(strSelect, cnn)
Dim ds As New DataSet
dscmd.Fill(ds, "Bazis_pomel") ===ОШИБКА Отсутствует значение для одного или нескольких требуемых параметров.
Dim tableStyle As DataGridTableStyle = New DataGridTableStyle()
tableStyle.MappingName = "Bazis_pomel"

Dim discontinuedCol As New DataGridTextBoxColumn()
discontinuedCol.MappingName = "id"
discontinuedCol.HeaderText = "група помелу"
discontinuedCol.Width = 90
tableStyle.GridColumnStyles.Add(discontinuedCol)

tbColumn = New DataGridTextBoxColumn()
tbColumn.MappingName = "type_pomol"
tbColumn.HeaderText = "тип помелу"
tbColumn.Width = 90
tableStyle.GridColumnStyles.Add(tbColumn)

Me.DataGrid1.TableStyles.Add(tableStyle)
DataGrid1.DataSource = ds
DataGrid1.DataMember = ds.Tables(0).TableName
End Sub
...
Рейтинг: 0 / 0
23.01.2007, 13:27
    #34275053
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с натройкой DataGrid в ручную
MeduzKA Dim strSelect As String = "select *from Bazis_pomel where (id = ?)"
'cmd.Parameters.Add("@kod_pomel", OleDbType.Char).Value = kod_pomel
ну если вы делаете запрос с параметром, то зачем параметр коментарите?
I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
23.01.2007, 14:10
    #34275258
MeduzKa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с натройкой DataGrid в ручную
HandKot MeduzKA Dim strSelect As String = "select *from Bazis_pomel where (id = ?)"
'cmd.Parameters.Add("@kod_pomel", OleDbType.Char).Value = kod_pomel
ну если вы делаете запрос с параметром, то зачем параметр коментарите?
I Have Nine Lives You Have One Only
THINK!

в программе не закоментировано и выдает ошибку,если делаю так -
Dim strSelect As String = "select *from Bazis_pomel where " & kod_pomel & " "
Dim dscmd As New System.Data.OleDb.OleDbDataAdapter(strSelect, cnn)
Dim ds As New DataSet
dscmd.Fill(ds, "Bazis_pomel")
Ошибка синтаксиса (пропущен оператор) в выражении запроса '75ПШЗГМ1' .
...
Рейтинг: 0 / 0
23.01.2007, 15:45
    #34275775
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с натройкой DataGrid в ручную
MeduzKaесли делаю так -
Dim strSelect As String = "select *from Bazis_pomel where " & kod_pomel & " "
Dim dscmd As New System.Data.OleDb.OleDbDataAdapter(strSelect, cnn)
Dim ds As New DataSet
dscmd.Fill(ds, "Bazis_pomel")
Ошибка синтаксиса (пропущен оператор) в выражении запроса '75ПШЗГМ1' .
в данном случае, если сравниваются строковые переменные, то надо оборачивать его в одинарные кавычки

Код: plaintext
"select *from Bazis_pomel where '" & kod_pomel & "' "

в примере с параметром, вот сам использую
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
Option Strict On
Option Explicit On 

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.VisualBasic

Namespace MyDataAccess

    Public Class DataLayer
        Implements IDisposable

        Private adtCommand As SqlDataAdapter     'sql data adapter
        Private cmdCommand As SqlCommand     'sql data adapter

        '----------------------------------------------------------------
        ' Sub New:
        '   Конструктор. 
        '----------------------------------------------------------------
        Public Sub New()
            MyBase.New()
            '
            ' Создаем датаадаптер
            '
            adtCommand = New SqlDataAdapter
            '
            ' создаем команду
            '
            cmdCommand = New SqlCommand
            cmdCommand.Connection = New SqlConnection(ConnectionString)
        End Sub

        '----------------------------------------------------------------
        ' Sub Dispose:
        '     Особождаем все ресурсы.
        '----------------------------------------------------------------
        Public Sub Dispose() Implements IDisposable.Dispose
            Dispose(True)
            GC.SuppressFinalize(True) ' as a service to those who might inherit from us
        End Sub

        '----------------------------------------------------------------
        ' Sub Dispose:
        '     Освобождаем память, занятую переменными класса.
        '----------------------------------------------------------------
        Protected Overridable Sub Dispose(ByVal disposing As Boolean)
            If Not disposing Then
                Exit Sub ' we're being collected, so let the GC take care of this object
            End If

            If Not cmdCommand Is Nothing Then
                If Not cmdCommand.Connection Is Nothing Then
                    cmdCommand.Connection.Dispose()
                End If
                cmdCommand.Dispose()
            End If

            If Not adtCommand Is Nothing Then
                adtCommand.Dispose()
                adtCommand = Nothing
            End If
        End Sub

        '----------------------------------------------------------------
        ' Sub PopulateCommandParam:
        '     Параметры для запроса
        '----------------------------------------------------------------
        Private Sub PopulateCommandParam(ByVal arParams() As SqlParameter, ByVal cmd As SqlCommand)
            Dim i As Integer

            For i = LBound(arParams) To UBound(arParams)
                cmd.Parameters.Add(arParams(i))
            Next
        End Sub

        '----------------------------------------------------------------
        ' Sub PopulateOutputParam:
        '     Возвращает результаты запроса
        '----------------------------------------------------------------
        Private Sub PopulateOutputParam(ByVal arParams() As SqlParameter, ByVal cmd As SqlCommand)
            Dim i As Integer

            For i = LBound(arParams) To UBound(arParams)
                If arParams(i).Direction = ParameterDirection.Output Then
                    arParams(i).Value = cmd.Parameters(arParams(i).ParameterName).Value
                End If
            Next
        End Sub

        Public Sub ExecSP(ByVal _proc As String, _
            ByRef intReturnVal As Integer, _
            Optional ByRef arParams() As SqlParameter = Nothing, _
            Optional ByRef dsResult As DataSet = Nothing)

            Try
                cmdCommand.CommandType = CommandType.StoredProcedure
                cmdCommand.CommandText = _proc
                If Not (arParams Is Nothing) Then
                    PopulateCommandParam(arParams, cmdCommand)
                End If

                'выполняем команду
                cmdCommand.Connection.Open()
                If dsResult Is Nothing Then
                    intReturnVal = cmdCommand.ExecuteNonQuery
                Else
                    adtCommand.SelectCommand = cmdCommand
                    intReturnVal = adtCommand.Fill(dsResult)
                End If

                If Not (arParams Is Nothing) Then
                    PopulateOutputParam(arParams, cmdCommand)
                End If
            Finally
                If Not cmdCommand Is Nothing Then
                    If Not cmdCommand.Connection Is Nothing Then
                        cmdCommand.Connection.Dispose()
                    End If
                    cmdCommand.Dispose()
                End If
                adtCommand.Dispose()
            End Try

        End Sub


        Public Sub ExecSQL(ByVal _sql As String, _
            ByRef intReturnVal As Integer, _
            Optional ByRef dsResult As DataSet = Nothing)

            Try
                cmdCommand.CommandType = CommandType.Text
                cmdCommand.CommandText = _sql

                'выполняем команду
                If dsResult Is Nothing Then
                    intReturnVal = cmdCommand.ExecuteNonQuery
                Else
                    adtCommand.SelectCommand = cmdCommand
                    intReturnVal = adtCommand.Fill(dsResult)
                End If
            Finally
                If Not cmdCommand Is Nothing Then
                    If Not cmdCommand.Connection Is Nothing Then
                        cmdCommand.Connection.Dispose()
                    End If
                    cmdCommand.Dispose()
                End If
                adtCommand.Dispose()
            End Try

        End Sub

    End Class
End Namespace
а вызывается так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
            Dim arParams( 0 ) As SqlParameter
            Dim intReturnVal As Integer

            Try
                arParams( 0 ) = New SqlParameter("@ID", SqlDbType.VarChar)
                arParams( 0 ).Direction = ParameterDirection.Input
                arParams( 0 ).Value = id

                With New DataLayer
                    .ExecSP("dbo.MyStoredProcedure", intReturnVal, arParams)
                End With

            Catch ex As Exception
                'обработчик ошибки
                Dim i As Integer
                i =  1 
            End Try

ЗЫЖ в вашем случае попробуйте вместо "знака вопроса" поставить название параметра
...
Рейтинг: 0 / 0
23.01.2007, 17:10
    #34276138
MeduzKa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с натройкой DataGrid в ручную
спасибо,поставила одинарные кавычки все прошло!
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / проблемы с натройкой DataGrid в ручную / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]