powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как обратиться к значению полей грида
25 сообщений из 61, страница 2 из 3
как обратиться к значению полей грида
    #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
25 сообщений из 61, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как обратиться к значению полей грида
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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