powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / проблемы с натройкой DataGrid в ручную
5 сообщений из 5, страница 1 из 1
проблемы с натройкой DataGrid в ручную
    #34274468
MeduzKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите,плиз,как исправить ошибку-
необходимо чтобы в 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
проблемы с натройкой DataGrid в ручную
    #34275053
Фотография 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!
...
Рейтинг: 0 / 0
проблемы с натройкой DataGrid в ручную
    #34275258
MeduzKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
проблемы с натройкой DataGrid в ручную
    #34275775
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
проблемы с натройкой DataGrid в ручную
    #34276138
MeduzKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо,поставила одинарные кавычки все прошло!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / проблемы с натройкой DataGrid в ручную
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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