powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как обратиться к значению полей грида
61 сообщений из 61, показаны все 3 страниц
как обратиться к значению полей грида
    #32616965
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я после VB6 не могу понять как в VB.Net как обрабится к полям грида. Мне нужно, чтобы после изменений в полях сработал такой обаботчик:
поле сумма=поле кол-во * поле цена
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32617047
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В вашем случае можно пойти по другому пути - используя доп поле DataTable

yourTable.Columns.Add("Cost",GetType(Decimal),
"Amount*Price");


А далее отобразить его в гриде, оно будет пересчитываться....
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32617089
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
yourTable.Columns.Add("Cost",GetType(Decimal),
"Amount*Price")

Я изменила на свои наименования, но строка подчеркивается
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32617150
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

MSDN - DataColumnCollection.Add Method пример
Private Sub AddColumn()
Dim cols As DataColumnCollection
Dim myCol As DataColumn
' Get the DataColumnCollection of a table in a DataSet.
cols = DataSet1.Tables("Orders").Columns
' КАК РАЗ СЛУЧАЙ С EXPRSSION
myCol = cols.Add("Total", System.Type.GetType("System.Decimal"), _
"Price + Tax")
myCol.ReadOnly = True
myCol.Unique = False
End Sub



[\B]
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32617228
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то мне не понятен этот вариант...
а что без доп поля нельзя обойтись, а с имеющимся проделать обновление?
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32617319
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у вас ,очевидно, существует какое то поле для отображения итогового поля сумма (допустим Cost).
можно его и задействовать. Просто у данного поля соотв. образом заполнить св-во
Expression.
yourTable.Columns.("Cost").Expression="Amount*Price"


другой вариант - более долгий и не совсем правильный, с помощью CurrencyManager узнать кол-во записей в гриде, бежать по записе в цикле и пересчитывать значение .....
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32617354
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а как обратиться : см DataGrid.Item Property
например так gr(iRow, iCol)
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32617444
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо за помощь...
я написала так:
Код: plaintext
1.
2.
        mydataset.Tables("mytable").Columns("pole3").Expression = "pole1*pole2"

и теперь при переходе на др строку в поле3 грида отображается подсчитанное значение
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32617466
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в совокупности все выглядит так:

Код: plaintext
1.
2.
3.
4.
      AddHandler objDS_Documents.Tables("TPositions").ColumnChanged, AddressOf MyColumnChanged  ' подпишимся на ColumnChanged

Public Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)
        objDS_Documents.Tables("tpositions").Columns("position_stoim").Expression = "position_kolichestvo*position_price"
End Sub
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32618572
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В продолжение у меня возник следующий вопрос:
В гриде как уже говорилось есть поле Сумма, равное кол-во*цена.
На форме же еще есть текстбокс, который отражает Sum(поле Сумма).

Вопрос такой... После изменения кол-ва или цены мне нужно, чтоб пересчитывалось не только поле Сумма в гриде, но и тестбокс на форме.

Как это лучше реализовать???
На VB6 я создала рекордсет, куда заносился рез-т sql запроса
(select sum(position_stoim))
Потом значению поля из рекордсета основго присваивала полученное значению из только что созданного рекордсета.
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32618656
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написала так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim mysqlcmd As New System.Data.SqlClient.SqlCommand()
        mysqlcmd.Connection = SqlConnection1
        mysqlcmd.CommandType = CommandType.Text

        mysqlcmd.CommandText = "sum(position_stoim*position_kurs_currency) from tpositions"
        Dim vtotalsum As VariantType

        TextBox1.Text = mysqlcmd.ExecuteScalar
Однако подчеркивается последняя строка
(TextBox1.Text = mysqlcmd.ExecuteScalar).

Что неправильно?
PS. Connection уже открыт на момент выполнения этого обработчика
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32618779
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TextBox1.Text = mysqlcmd.ExecuteScalar

ExecuteScalar возвращает тип object. Вам надо воспользоваться CType для преобразования возвращаемого значения в строку, которая впоследствии может быть присвоена св-ву Text.
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32618950
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, исправила, но пока сам обработчик не работает должным образом.
Во-первых я подумала, что в запросе у меня не стоит условие, что подсчитывать по столбцу в гриде только для текущей записи из главной таблицы. Пэтому я изменила чуть запрос, но не уверена, что он правильный.
Это было раз.
Во-вторых как выглядит весть обработчик для полноты картины:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)

        objDS_Documents.Tables("tpositions").Columns("position_stoim").Expression = "position_kolichestvo*position_price"

        Dim mysqlcmd As New System.Data.SqlClient.SqlCommand()
        mysqlcmd.Connection = SqlConnection1
        mysqlcmd.CommandType = CommandType.Text
        mysqlcmd.CommandText = "sum(position_stoim*position_kurs_currency) from tpositions where document_id=?"
        TextBox1.Text = CType(mysqlcmd.ExecuteScalar, String)

End Sub 
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32618975
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
малеенькая поправочка:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)

        objDS_Documents.Tables("tpositions").Columns("position_stoim").Expression = "position_kolichestvo*position_price"

        Dim mysqlcmd As New System.Data.SqlClient.SqlCommand()
        mysqlcmd.Connection = SqlConnection1
        mysqlcmd.CommandType = CommandType.Text
        mysqlcmd.CommandText = "select sum(position_stoim*position_kurs_currency) from tpositions where document_id=?"
        TextBox1.Text = CType(mysqlcmd.ExecuteScalar, String)

End Sub
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32618980
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysqlcmd.Connection = SqlConnection1
mysqlcmd.CommandType = CommandType.Text
mysqlcmd.CommandText = "sum(position_stoim*position_kurs_currency) from tpositions where document_id=?"
TextBox1.Text = CType(mysqlcmd.ExecuteScalar, String)

End Sub

У вас используется запрос с параметром
Очевидно конструкция все таки должна определять параметр:

mysqlcmd.CommandText = "sum(position_stoim*position_kurs_currency) from tpositions where document_id=@id"
mysqlcmd..Parameters.Add("@id", SqlDbType.Int, 5)
mysqlcmd.Parameters(0).Value = !!!!!!!!!!некторое значение
TextBox1.Text = CType(mysqlcmd.ExecuteScalar, String)
[\B]
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32618990
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysqlcmd.Parameters.Add("@id", SqlDbType.Int, 5)

Извиняюсь - промахнулся, Integer не имеет размерности
правильнее так
mysqlcmd.Parameters.Add("@id", SqlDbType.Int,0)
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32619028
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я написала так:

Код: plaintext
1.
2.
3.
4.
5.
6.
Dim mysqlcmd As New System.Data.SqlClient.SqlCommand()
        mysqlcmd.Connection = SqlConnection1
        mysqlcmd.CommandType = CommandType.Text
        mysqlcmd.CommandText = "select sum(position_stoim*position_kurs_currency) from tpositions where document_id=@document_id"
        mysqlcmd.Parameters.Add("@document_id", SqlDbType.Int,  5 )
        mysqlcmd.Parameters( 0 ).Value = objDS_Documents.Tables("tpositions").Columns("document_id")
        TextBox1.Text = CType(mysqlcmd.ExecuteScalar, String)

Но пока, при выполнени этого обработчика ничего не происходит и значение в тексбоксе остается прежним.
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32619062
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все таки правильнее написать так:
mysqlcmd.Parameters.Add("@document_id", SqlDbType.Int, 0)[\B]
Далее я бы проверил чему равняется Value или objDS_Documents.Tables("tpositions").Columns("document_id")
Как я понимаю - у вас MS SQL - далее я бы выполнил запрос НА СЕРВЕРЕ с данным параметром . Если он выполнился корректно, то тогда надо искать проблему дальше
И еще - document_id действительно интеджеровское поле?
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32619085
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.
mysqlcmd.Parameters.Add("@document_id", SqlDbType.Int, 0)
Спасибо, исправила.
2.

Я не совсем уверена, что она правильная. Пыталась посмотреть в вотче после присвоения и нигде не увидела чтоб значение стало равняться текущему значение document_id
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32619135
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно ли я понимаю что вы хотите работать с помеченной строкой датагрида и оттуда брать значение document_id. Если так - то нужно работать с CurrencyManager - примерно так
Dim cm As CurrencyManager = indingContext(dataGrid1.DataSource, dataGrid1.DataMember)
Dim rv As DataRowView = CType(cm.Current, DataRowView) 'вот это текущая строка грида
rv("documnet_id") - это и есть значение поля
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32619155
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо
Dim cm As CurrencyManager = indingContext(dataGrid1.DataSource, dataGrid1.DataMember)
Нужно
Dim cm As CurrencyManager = BindingContext(dataGrid1.DataSource,
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32619160
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧТО ТАКОЕ - ОПЯТЬ ОШИБСЯ!!!
Вместо
Dim cm As CurrencyManager = indingContext(dataGrid1.DataSource, dataGrid1.DataMember)
Нужно
Dim cm As CurrencyManager = BindingContext(dataGrid1.DataSource,dataGrid1.DataMember)
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32619284
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в строке:
Код: plaintext
Dim cm As CurrencyManager = BindingContext(grdTPositions.DataSource, grdTPositions.DataMember)
у меня подчеркивается:
BindingContext(grdTPositions.DataSource, grdTPositions.DataMember)
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32619313
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

я просто использовал синатксис C# на котором работаю...
надо приветсти к типу CurrencyManager
Dim cm As CurrencyManager = CType(BindingContext(grdTPositions.DataSource, grdTPositions.DataMember),CurrencyManager)
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32621195
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот текст на данный момент:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)

        objDS_Documents.Tables("tpositions").Columns("position_stoim").Expression = "position_kolichestvo*position_price"

        Dim mysqlcmd As New System.Data.SqlClient.SqlCommand()
        mysqlcmd.Connection = SqlConnection1
        mysqlcmd.CommandType = CommandType.Text
        mysqlcmd.CommandText = "select sum(position_stoim*position_kurs_currency) from tpositions where document_id=@document_id"
        mysqlcmd.Parameters.Add("@document_id", SqlDbType.Int,  0 )
        Dim cm As CurrencyManager = CType(BindingContext(grdTPositions.DataSource, grdTPositions.DataMember), CurrencyManager)
        Dim rv As DataRowView = CType(cm.Current, DataRowView) 
        mysqlcmd.Parameters( 0 ).Value = rv("documnet_id")
        TextBox1.Text = CType(mysqlcmd.ExecuteScalar, String)

End Sub

Проблема того, что не происходит пересчет в текстбоксе до сих пор осталась.
Посмотрела по вотчу и вот что увидела после строки
mysqlcmd.Parameters(0).Value = rv("documnet_id")
mysqlcmd.Parameters(0).Value имеет Nothing
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32621200
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имеется в виду, что после того как курсор пройдет уже строку
mysqlcmd.Parameters(0).Value =...

mysqlcmd.Parameters(0).Value имеет значение Nothing
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32621300
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А rv если в Watch посмотреть?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32621701
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашла ошибку, неправильно было написано поле, откуда надо брать значение для параметра, НО

теперь после прохождения строки
mysqlcmd.Parameters(0).Value = rv("document_id")

mysqlcmd.Parameters(0).Value =коду документа (т е все правильно)

однако после прохождения этой строки
TextBox1.Text = CType(mysqlcmd.ExecuteScalar, String)
TextBox1.Text остается неизменным

это что значит, что ExecuteScalar не выполняется?
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32622328
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFF:
ИМХО ваши страдания заключаются в том что вы сразу же пытаетесь сделать идеальный рабочий код, есть хороший принцип "разделяй и влавствуй", разбейте этот код на несколько процедур, и проверяйте функциональность каждого по отдельности.

Теперь по делу:
1) Попробуйте выполнить ваш select из Query Analyzer.
С параметром document_id, без параметра.

2) Проверьте что возвращает mysqlcmd.ExecuteScalar
Например так:
Dim myObject as Object = mysqlcmd.ExecuteScalar()
И смотрите myObject в Watch

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32622911
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
2) Проверьте что возвращает mysqlcmd.ExecuteScalar
Например так:
Dim myObject as Object = mysqlcmd.ExecuteScalar()
И смотрите myObject в Watch
Посмотрела...
myObject = Nothing
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32623193
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по остальным моим вопросам?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32623351
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сори, я поторопилась...
начнем сначала:
первоначально у меня было вот это:
Код: plaintext
1.
2.
Public Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)
        objDS_Documents.Tables("tpositions").Columns("position_stoim").Expression = "position_kolichestvo*position_price"
End Sub
Так вот, значение в поле сумма для редактируемой строки действительно подсчитывается и отображается, однако, если затем зафиксировать (сохранить так сказать) внесенные изменения, т е сделать Update...(обработчик был сформирован визардом), то выдается такое сообщение:

the column mapping from sourcecolumn 'position_stoim' failed because the datacolumn 'position_stoim' is a computed column
Суть я уловила, но что я должна сделать мне не понятно
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32623354
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть не понятно, поправлюсь:
Так вот, значение в поле сумма, т е значение в поле position_stoim
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32623562
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем сохранять вычисляемое поле в базе данных, если его всегда можно легко вычислить?

Если же вы все таки хотите использовать это поле, то придется отказаться от вычисляемого столбца. И делать все вычисления например при помощи RowChanging
ИМХО все таки это не хороший вариант, зачем хранить в БД избыточные данные + существует вероятность нарушения целостности этих данных, когда данные из-за возможных ошибочных ситуаций "разъедутся"
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32623706
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажите, пожалуйста, пример
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32623792
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что касается хранения этого поля, то...
разрабатывала базу не я...
я ее только дорабатываю под новые потребности...
человек, который сделал так, а не иначе посчитал, что это будет удобнее под данные задачи, соот-но, я особо не настаиваю на изменении
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32624372
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что касается хранения этого поля, то...
разрабатывала базу не я...
я ее только дорабатываю под новые потребности...
человек, который сделал так, а не иначе посчитал, что это будет удобнее под данные задачи, соот-но, я особо не настаиваю на изменении


OFFTOP:
Надо этому человеку побольше почитать книжек по проектированию БД :-)


покажите, пожалуйста, пример

На самом деле ничего сложного, речь идет о ручном вычислении значений для поля. Т.к. проверку на валидность данных осуществлять не требуется и у вас уже есть следующий код:
Код: plaintext
1.
2.
3.
Public Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)
        objDS_Documents.Tables("tpositions").Columns("position_stoim").Expression = "position_kolichestvo*position_price"
End Sub

То поправить эту процедуру можно примерно следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)
  If e.Column.ColumnName.Equals("position_kolichestvo") orelse e.Column.ColumnName.Equals("position_price") then
     If (not e.Row.IsNull("position_kolichestvo")) andalso (not e.Row.IsNull("position_price")) then
// например оба операнда имеют тип decimal
              e.Row("position_stoim") = CType(e.Row("position_kolichestvo), decimal) * CType(e.Row("position_price"), decimal)
// можно это выражение и "обернуть" в try catch
      End If
  EndIf
End Sub

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32624694
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В строке:
Код: plaintext
e.Row("position_stoim") = CType(e.Row("position_kolichestvo), decimal) * CType(e.Row("position_price"), decimal)

во-первых, второе CType не подсвечивается синим
во-вторых, подчеркивается ("position_price")
Наименование колонки написано правильно, на всякий случай я скопировала и вставила заново, так что дело не в этом
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32624697
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
осталось только во-вторых
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32624701
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сори, уже ни осталось ничего, комп жутко тормозил, теперь все нормально
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32624728
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, все ок.
Возвращаюсь ко второму вопросу, по поводу текстбокса...

Это поле (итоговое по всем строкам) тоже хранится в базе.
При этом условии такой код подходит:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim mysqlcmd As New System.Data.SqlClient.SqlCommand()
        mysqlcmd.Connection = SqlConnection1
        mysqlcmd.CommandType = CommandType.Text
        mysqlcmd.CommandText = "select sum(position_stoim*position_kurs_currency) as total_sum from tpositions where document_id=@document_id"
        mysqlcmd.Parameters.Add("@document_id", SqlDbType.Int,  0 )
        Dim cm As CurrencyManager = CType(BindingContext(grdTPositions.DataSource, grdTPositions.DataMember), CurrencyManager)
        Dim rv As DataRowView = CType(cm.Current, DataRowView) 'вот это текущая строка грида
        mysqlcmd.Parameters("@document_id").Value = rv("document_id")
        TextBox1.Text = CType(mysqlcmd.ExecuteScalar, String)
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32625058
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa
1) Попробуйте выполнить ваш select из Query Analyzer.
С параметром document_id, без параметра.


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32625124
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выполнила...
селект проходит, выдается рез-т
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32625153
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
select sum(position_stoim*position_kurs_currency) as total_sum from tpositions where document_id= 379 
получила правильное значение
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32625160
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
select sum(position_stoim*position_kurs_currency) as total_sum from tpositions
тоже выполнился (подсчитал по всем строкам)
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32625188
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я взяла из строки ...mysqlcmd.ExecuteScalar... выделила mysqlcmd и добавила в вотч.
посмотрела и там cmdtext = select ... where document_id=@document_id
а разве не должно уже стоять конкретное значение?
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32626046
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я взяла из строки ...mysqlcmd.ExecuteScalar... выделила mysqlcmd и добавила в вотч.
посмотрела и там cmdtext
CommandText - это строковое cвойство, которое вы сами задали и соответственно получили на выходе в watch'e.
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32626160
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim mysqlcmd As New System.Data.SqlClient.SqlCommand()
mysqlcmd.Connection = SqlConnection1
mysqlcmd.CommandType = CommandType.Text
mysqlcmd.CommandText = "select sum(position_stoim*position_kurs_currency) as total_sum from tpositions where document_id=37"
'mysqlcmd.Parameters.Add("@document_id", SqlDbType.Int, 0)
'Dim cm As CurrencyManager = CType(BindingContext(grdTPositions.DataSource, grdTPositions.DataMember), CurrencyManager)
'Dim rv As DataRowView = CType(cm.Current, DataRowView) 'вот это текущая строка грида
'mysqlcmd.Parameters("@document_id").Value = rv("document_id")
'TextBox1.Text = CType(mysqlcmd.ExecuteScalar, String)
Dim myObject As Object = mysqlcmd.ExecuteScalar()
MsgBox(CType(myObject, String))

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32626795
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробывала...
самое интересное, что сообщение вообще не выдается...
курсор попадает на эту строку, проходит и вновь активизируется форма
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32626814
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В предыдущем посте я ошибся - вместо 37 попробуйте document_id = 379, т.к. вполне возмжно что document_id = 37 в базе нет.

В общем идея следующая, вам надо просто добиться выполнения запроса с возратом результатов (про это я и писал, что вы хотите сделать сразу же релиз, не проверив работу отдельных конструкций).

В общем попробуйте этот запрос:

select sum(position_stoim*position_kurs_currency) as total_sum from tpositions where document_id=379


+ покажите где и когда вы открываете SqlConnection1
+ этот код выведите отдельно на кнопку (если еще не выведено)

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32626987
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)
Спешу сообщить, что если повесить этот обработчик на кнопку, то все работает.
Ест-но, что на кнопке это было для проверки, на какое же событие нужно повесить этот обработчик, чтоб все было ок?
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32627001
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочу дополнить вот что...
последовательность действий такова:
изменяю кол-во, перехожу в др поле, значение сумма для строки пересчитывается, затем нажимаю на кнопку, где висит обработчик все что связано с Update и только после этого нажимаю на кнопку, на которой висит известный нам обработчик для пересчета и занесения итоговой суммы в текстбокс.
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32627010
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочу дополнить вот что...
последовательность действий такова:
изменяю кол-во, перехожу в др поле, значение сумма для строки пересчитывается, затем нажимаю на кнопку, где висит обработчик все что связано с Update и только после этого нажимаю на кнопку, на которой висит известный нам обработчик для пересчета и занесения итоговой суммы в текстбокс.

было бы хорошо подкрепить все эти шаги соответсвующим кодом, как бы резюмируя и фокусируя полученные итоги.
Тогда нам станет понятно где мы находимся и с каким кодом сейчас работаем.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32627295
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Sub MyColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)
        If e.Column.ColumnName.Equals("position_kolichestvo") OrElse e.Column.ColumnName.Equals("position_price") Then
            If (Not e.Row.IsNull("position_kolichestvo")) AndAlso (Not e.Row.IsNull("position_price")) Then
                e.Row("position_stoim") = CType(e.Row("position_kolichestvo"), Decimal) * CType(e.Row("position_price"), Decimal)
              End If
        End If

End Sub

Далее Update (код был сформирован визардом)
и нажатие кнопки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim mysqlcmd As New System.Data.SqlClient.SqlCommand()
        mysqlcmd.Connection = SqlConnection1
        mysqlcmd.CommandType = CommandType.Text
        mysqlcmd.CommandText = "select sum(position_stoim*position_kurs_currency) as total_sum from tpositions where document_id=@document_id"
        mysqlcmd.Parameters.Add("@document_id", SqlDbType.Int,  0 )
        Dim cm As CurrencyManager = CType(BindingContext(grdTPositions.DataSource, grdTPositions.DataMember), CurrencyManager)
        Dim rv As DataRowView = CType(cm.Current, DataRowView) 'вот это текущая строка грида
        mysqlcmd.Parameters("@document_id").Value = rv("document_id")
        editdocument_stoim_itogo.Text = CType(mysqlcmd.ExecuteScalar, String)
        'Dim myObject As Object = mysqlcmd.ExecuteScalar()
        'MsgBox(CType(myObject, String))
    End Sub
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32628369
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Пока не ясно для чего тут использовать Update,

2) Покажите структуру таблиц, с которыми работаете в данном примере

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32628651
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Update здесь использовать для того, чтобы зафиксировать изменения, потому как только после этого они отобразятся в базе и только после этого в результате пересчета для всех строк выдается верный рез-т (с учетом только что сделанных изменений в одной из строк)
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32628688
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Update здесь использовать для того, чтобы зафиксировать изменения, потому как только после этого они отобразятся в базе и только после этого в результате пересчета для всех строк выдается верный рез-т (с учетом только что сделанных изменений в одной из строк)

А разве эти данные уже не присутствуют в DataSet?
Покажите структуру DataSet и структуру таблиц.
Я хочу разобраться почему необходимо лишний раз обращаться к БД, обычно этого можно избежать.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32628787
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот текст не предполагает обращение к Сету, он предполагает обращение к самой базе, это я вчера вроде прочитала
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim mysqlcmd As New System.Data.SqlClient.SqlCommand()
        mysqlcmd.Connection = SqlConnection1
        mysqlcmd.CommandType = CommandType.Text
        mysqlcmd.CommandText = "select sum(position_stoim*position_kurs_currency) as total_sum from tpositions where document_id=@document_id"
        mysqlcmd.Parameters.Add("@document_id", SqlDbType.Int,  0 )
        Dim cm As CurrencyManager = CType(BindingContext(grdTPositions.DataSource, grdTPositions.DataMember), CurrencyManager)
        Dim rv As DataRowView = CType(cm.Current, DataRowView) 'вот это текущая строка грида
        mysqlcmd.Parameters("@document_id").Value = rv("document_id")
        editdocument_stoim_itogo.Text = CType(mysqlcmd.ExecuteScalar, String)
        'Dim myObject As Object = mysqlcmd.ExecuteScalar()
        'MsgBox(CType(myObject, String))
    End Sub

...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32628911
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это понятно, остается главный вопрос, неужели нет данных в DataSet для вычисления sum(position_stoim*position_kurs_currency) ???


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32629289
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ааа
так в том-то и дело, что они там есть, просто я знала только этот способо, поэтому так и заморочилась, если тоже можно сделать с пом сета, это было бы даже проще
...
Рейтинг: 0 / 0
как обратиться к значению полей грида
    #32630198
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa
А разве эти данные уже не присутствуют в DataSet?
Покажите структуру DataSet и структуру таблиц.


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как обратиться к значению полей грида
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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