powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / обновления из грида в базу
25 сообщений из 60, страница 2 из 3
обновления из грида в базу
    #32527315
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересует что выдают MsgBox
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        OleDbDataAdapter1.UpdateCommand = OleDbUpdateCommand1

' Убираем это пока
'        Dim frm As FormSpVeks = New FormSpVeks
'           frm.AddVeks(dsNewSD)
'            Me.ugVeks.DataSource = Me.dsNewSD.Tables("spVeks")
'        BindingContext(dsNewSD, "spVeks").EndCurrentEdit()
'        BindingContext(dsNewSD, "spVeks").EndCurrentEdit()

        dsNewSD.Tables("spVeks").Rows( 0 )( 1 ) =  dsNewSD.Tables("spVeks").Rows( 0 )( 1 )
        MsgBox("HasChanges = " & dsNewSD.HasChanges(DataRowState.Modified).ToString())
        Dim modified As DataSet = dsNewSD.GetChanges(DataRowState.Modified)
        MsgBox("Count = "  &  modified.Tables("spVeks).Rows.Count.ToString())

        AddHandler OleDbDataAdapter1.RowUpdating, AddressOf OleDbDataAdapter1_RowUpdating
        OleDbDataAdapter1.Update(dsNewSD)
        dsNewSD.AcceptChanges()
        Dim modified As DataSet = dsNewSD.GetChanges(DataRowState.Modified)
        Console.WriteLine(modified.Tables( 0 ).TableName)
        OleDbDataAdapter1.Update(dsNewSD)
        dsNewSD.AcceptChanges()
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32527469
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше сразу же так:
Код: 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.
        OleDbDataAdapter1.UpdateCommand = OleDbUpdateCommand1
' Убираем это пока
'        Dim frm As FormSpVeks = New FormSpVeks
'           frm.AddVeks(dsNewSD)
'            Me.ugVeks.DataSource = Me.dsNewSD.Tables("spVeks")
         MsgBox("Before: HasChanges = " & dsNewSD.HasChanges(DataRowState.Modified).ToString())

        Dim modified As DataSet = dsNewSD.GetChanges(DataRowState.Modified)
        If modified is Nothing Then
             MsgBox("Before: Modified is nothing")
        Else 
             MsgBox("Before: Count = "  &  modified.Tables("spVeks).Rows.Count.ToString())
        End If

        modified = Nothing

        dsNewSD.Tables("spVeks").Rows(0)(1) =  dsNewSD.Tables("spVeks").Rows(0)(1)
        MsgBox("After: HasChanges = " & dsNewSD.HasChanges(DataRowState.Modified).ToString())
        modified = dsNewSD.GetChanges(DataRowState.Modified)
        If modified is Nothing Then
             MsgBox("After: Modified is nothing")
        Else 
             MsgBox("After: Count = "  &  modified.Tables("spVeks).Rows.Count.ToString())
        End If
        AddHandler OleDbDataAdapter1.RowUpdating, AddressOf OleDbDataAdapter1_RowUpdating
        OleDbDataAdapter1.Update(dsNewSD)
        dsNewSD.AcceptChanges()
        Dim modified As DataSet = dsNewSD.GetChanges(DataRowState.Modified)
        Console.WriteLine(modified.Tables( 0 ).TableName)
        OleDbDataAdapter1.Update(dsNewSD)
        dsNewSD.AcceptChanges()

В какую вы таблицу хотите внести изменения uchveks или spVeks?
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529107
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему: 'Убираем пока это ...
ведь у меня именно в этом и заполняется датасет в функции другой формы!
естественно незаполнив датасет все эти месаджы выдают false и nothing
если же эти строки не комментировать, то выдаёт true 1 true 1
в чем же дело? непойму ...
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529108
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В какую вы таблицу хотите внести изменения uchveks или spVeks?

в таблицу uchveks, а таблица spVeks это тажа таблица в датасете.
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529239
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>а почему: 'Убираем пока это ...
ведь у меня именно в этом и заполняется датасет в функции другой формы!
естественно незаполнив датасет все эти месаджы выдают false и nothing

Потому что это всего лишь "пока" :-) а сейчас не убираем.

>если же эти строки не комментировать, то выдаёт true 1 true 1
в чем же дело? непойму ...

Теперь такой вариант, обратите внимания на переставленные и добавленные строки, а также на то сработает ли RowUpdating и внесутся ли изменения в БД. А также произведите изменения в модальной форме минимум двух строк:
Код: 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.
        OleDbDataAdapter1.UpdateCommand = OleDbUpdateCommand1

         MsgBox("Before: HasChanges = " & dsNewSD.HasChanges(DataRowState.Modified).ToString())
        Dim modified As DataSet = dsNewSD.GetChanges(DataRowState.Modified)
        If modified is Nothing Then
             MsgBox("Before: Modified is nothing")
        Else 
             MsgBox("Before: Count = "  &  modified.Tables("spVeks).Rows.Count.ToString())
        End If

        Dim frm As FormSpVeks = New FormSpVeks
           frm.AddVeks(dsNewSD)
            Me.ugVeks.DataSource = Me.dsNewSD.Tables("spVeks")

        modified = Nothing
'        dsNewSD.Tables("spVeks").Rows(0)(1) =  dsNewSD.Tables("spVeks").Rows(0)(1)  Убираем эту строку

        MsgBox("After: HasChanges = " & dsNewSD.HasChanges(DataRowState.Modified).ToString())
        modified = dsNewSD.GetChanges(DataRowState.Modified)
        If modified is Nothing Then
             MsgBox("After: Modified is nothing")
        Else 
             MsgBox("After: Count = "  &  modified.Tables("spVeks).Rows.Count.ToString())
        End If
        AddHandler OleDbDataAdapter1.RowUpdating, AddressOf OleDbDataAdapter1_RowUpdating
       OleDbDataAdapter1.TableMappings.Add("Table", "spVeks") ' Добавим эту строку
       OleDbDataAdapter1.Update(dsNewSD)
        dsNewSD.AcceptChanges()
        Dim modified As DataSet = dsNewSD.GetChanges(DataRowState.Modified)
        Console.WriteLine(modified.Tables( 0 ).TableName)
        OleDbDataAdapter1.Update(dsNewSD)
        dsNewSD.AcceptChanges()
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529308
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не вносятся изменения в бд

OleDbDataAdapter1.TableMappings.Add("Table", "spVeks")
а почему "Table" ? ведь у меня имя таблицы в бд - uchveks, а в dataset вроде бы spVeks
а какие изменения в модальной форме?
а Console.WriteLine(modified.Tables(0).TableName) кстати не делает - отсутствует ссылка ...
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529316
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>не вносятся изменения в бд
>OleDbDataAdapter1.TableMappings.Add("Table", "spVeks")

Так эту строчку OleDbDataAdapter1.TableMappings.Add("Table", "spVeks") уберем Так как я у вас заметил что уже есть выше TableMappings только там ОБЯЗАТЕЛЬНО исправьте uchveks на spVeks.

>а Console.WriteLine(modified.Tables(0).TableName) кстати не делает - отсутствует ссылка ...

И правильно потому что впереди AcceptChanges, так что эти строки убивайте
Код: plaintext
1.
2.
Dim modified As DataSet = dsNewSD.GetChanges(DataRowState.Modified)
Console.WriteLine(modified.Tables( 0 ).TableName)

>а почему "Table" ? ведь у меня имя таблицы в бд - uchveks, а в dataset вроде >бы spVeks
Да потому что в dataSet как раз у вас и spVeks.

Пробуйте код еще раз и что выдают другие сообщения Before, After а также интересно еще раз посмотреть на весь код - будет видно что вы добавили а что нет и где еще требуется редакция.
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529363
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такое ощущение, что начали ходить по кругу
при клике на первой кнопке вызываю модальную форму и заполняю грид данными:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
            MsgBox("Before: HasChanges = " & dsNewSD.HasChanges(DataRowState.Modified).ToString())
            Dim modified As DataSet = dsNewSD.GetChanges(DataRowState.Modified)
            If modified Is Nothing Then
                MsgBox("Before: Modified is nothing")
            Else
                MsgBox("Before: Count = " & modified.Tables("spVeks").Rows.Count.ToString())
            End If
            Dim frm As FormSpVeks = New FormSpVeks
            frm.AddVeks(dsNewSD)
            Me.ugVeks.DataSource = Me.dsNewSD.Tables("spVeks")
месаджы бефоре естественно дают false и nothing
в той модальной форме происходит следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    Private Sub FormSpVeks_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
.....
            adpSD.Fill(dsSD, "spVeks")
            ugSelVeks.DataSource = dsSD.Tables("spVeks")
.....
end sub

    Friend Function AddVeks(ByRef dsNewSD As Data.DataSet) As Boolean
        ShowDialog()

        Dim selRows As Infragistics.Win.UltraWinGrid.SelectedRowsCollection = ugSelVeks.Selected.Rows
        Dim dataRows(selRows.Count -  1 ) As System.Data.DataRow
        Dim i As Integer
        For i =  0  To selRows.Count -  1 
            dataRows(i) = CType(selRows(i).ListObject, DataRowView).Row
        Next
        dsNewSD.Merge(dataRows)
        Return True

    End Function
выбранные строки грида подчиненной формы отобразились в гриде первой формы, я их редактирую
и жму на вторую кнопку пытаясь сохранить изменения в базе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
.....
добавляются объекты команд
этот код есть в приложенном файле выше
.....
        OleDbDataAdapter1.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("spVeks", "uchveks", ....
потом добавляются переменные для Update ....
.....
        Dim modified As DataSet = dsNewSD.GetChanges(DataRowState.Modified)

        modified = Nothing

        MsgBox("After: HasChanges = " & dsNewSD.HasChanges(DataRowState.Modified).ToString())
        modified = dsNewSD.GetChanges(DataRowState.Modified)
        If modified Is Nothing Then
            MsgBox("After: Modified is nothing")
        Else
            MsgBox("After: Count = " & modified.Tables("spVeks").Rows.Count.ToString())
        End If
        OleDbDataAdapter1.Update(dsNewSD)
        dsNewSD.AcceptChanges()
        OleDbDataAdapter1.Update(dsNewSD)
        dsNewSD.AcceptChanges()
и теперь месаджбоксы выдают true и модифицирована 1 запись.
но в базе не обновляется ни чего .
всё таки почему у меня в TableMapping висит "Table" ? написать:
Код: plaintext
DataTableMapping("spVeks", "uchveks",... 
потом ругается на OleDbDataAdapter1.Update(dsNewSD)
При обновлении не удалось найти TableMapping['Table'] или DataTable 'Table'. как же правильно мне сделать с TableMapping ?
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529375
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно так:

Код: plaintext
1.
OleDbDataAdapter1.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("Table", "spVeks", ....

Вы так пробовали?
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529508
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
DataTableMapping("Table", "spVeks", ....
так ругается на OleDbDataAdapter1.Update(dsNewSD)
An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529540
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заполнил грид без модальной формы и обновил данные - обновились в бд
значит не получается сделать update адаптара для нужной таблицы, а нужную таблицу из модальной формы незнаю
как указать чтоб сделать merge правильно, или TableMappings как сделать правильно? немогу.
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529568
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну осталось значит разобраться с логикой работы модальной формы. Опишите ее поподробнее.

На первый взгляд вы используете излишнее количество "наборов строк" (DataSet, DataRow()). А также Clone у вас стоит где нибудь или нет.

Одна из проблем у вас заключается в том что вы выбрали в DataSet одно название для таблицы, а в базе данных название у этой таблице иное, но это не значит что надо все сейчас менять, DataSetу - отсоединенный набор данных и ему все равно как и где что называется, а вот DataAdapterу не все равно.

Вообще ответ лежит в изучении DataSet который идет на обновление, мне кажется у вас там две таблицы одна называется spVeks другая uchVeks. Но это только предварительное заключение, вообще хотелось бы узнать подробно логику работу модальной формы, что откуда куда поступает, и мне кажется есть более простое решение вашей проблемы.
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529583
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с dataset в модальной форме я уж чего только не делал.
как она выглядит я приводил здесь же выше, повторюсь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub FormSpVeks_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
.....
            adpSD.Fill(dsSD, "spVeks")
            ugSelVeks.DataSource = dsSD.Tables("spVeks")
.....
end sub

    Friend Function AddVeks(ByRef dsNewSD As Data.DataSet) As Boolean
        ShowDialog()

        Dim selRows As Infragistics.Win.UltraWinGrid.SelectedRowsCollection = ugSelVeks.Selected.Rows
        Dim dataRows(selRows.Count -  1 ) As System.Data.DataRow
        Dim i As Integer
        For i =  0  To selRows.Count -  1 
            dataRows(i) = CType(selRows(i).ListObject, DataRowView).Row
        Next
        dsNewSD.Merge(dataRows)
        Return True

    End Function
 


там только процедура Load для формы и функция AddVeks в которой делается merge
при загрузке формы заполняется датасет(таблица "spVeks") из той же таблицы бд, в которую передаются обновления в основной форме,
при вызове функции создается массив выбранных строк и передается dsNewSD.Merge(dataRows)
clone нет!
причем dsNewSD в основной форме до открытия модальной формы просто создается и не заполняется ничем
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529607
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы изменил логику следующим образом утрированный пример но просто многое мне не нравиться как сейчас сделано у вас, например передача DataSet по ссылке ref в модальную форму:

Итак пример:
Пусть главная форма называется MainForm, как у вас я не знаю.
В главной форме объявляем DataSet dsSD с модификатором Friend
Например так:
Код: plaintext
1.
Friend dsSD as New DataSet()

Перед вызовом модальной формы заполняем dsSD.
adpSD.Fill(dsSD, "spVeks") // где adpSD - адаптер переносим из модальной формы в главную. Кстати интересно посмотреть на код этого DataAdapter особено на TableMappings.

Далее создаем Clone датасета dsSD, называем его dsNewSD:
Dim dsNewSD as DataSet = dsSD.Clone() ' Таким образом Clone создается один раз.

Потом вызываем модальную форму:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim frm as  New FormSpVeks()
frm.ShowDialog(Me) ' Me обязательно
' Этот код сработает после  модального формы, здесь легко сделать и проверку того что нажали в модальной форме например ОК или Cancel, и логично так сделать это дает возможность пользователю что то натворить в модальной форме и отказаться от содеянного :-)
Dim selRows As Infragistics.Win.UltraWinGrid.SelectedRowsCollection = frm.ugSelVeks.Selected.Rows
Dim dataRows(selRows.Count -  1 ) As System.Data.DataRow
Dim i As Integer
For i =  0  To selRows.Count -  1 
    dataRows(i) = CType(selRows(i).ListObject, DataRowView).Row
Next
dsNewSD.Merge(dataRows)  'Здесь следует внимательно изучить dsNewSD именно таблицу spVeks. Тут можно сделать простые проверки количество строк в spVeks до Merge и после.
' Далее все как обычно вносим изменения если надо в dsNewSD  и отправляем dsNewSD на Update.

Модальная форма:
Функцию Function AddVeks(ByRef dsNewSD As Data.DataSet) не надо, но у UltraDataGrid этой формы надо поставить модификатор Friend.
А Load модальной формы при этом выглядит следующим образом,
Код: plaintext
1.
2.
3.
Dim myOwner as MainForm
myOwner = CType(myOwner, MainForm)
ugSelVeks.DataSource = myOwner.dsSD.Tables("spVeks") ' Источник dataGrid DataSet из главной формы

Одно из преимуществ такого подхода, что практически в модальной форме нет кода, вся обработка сосредотачивается в главной/основной форме.
-----------------------------------------------------------------------------
Если же хотите разобраться со своим кодом, то детально изучайте все свои DataSetы. Какие когда таблицы появляются, какие когда строки изменяются и т.д. Также применительно к тому что сейчас есть, интересно изучить dsNewSD до и после Merge. Какие таблицы, какие строки, какие RowState
Так что ждем результатов :-)
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529640
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в модальной форме ругается на последнию строку
Dim myOwner As FormNewSd
myOwner = CType(myOwner, FormNewSd)
ugSelVeks.DataSource = myOwner.dsSD.Tables("spVeks")
В экземпляре не задана ссылка на объект.
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529707
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>в модальной форме ругается на последнию строку
ugSelVeks.DataSource = myOwner.dsSD.Tables("spVeks")
В экземпляре не задана ссылка на объект.

А вы dsSD объявили в основной форме с модификатором Friend или нет.

Код: plaintext
1.
Friend dsSD as New DataSet()

Вообще когда в VS.NET набиратет myOwner и ставите точку появляется на выбор dataset с именем dsSD?
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529716
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dsSD объявил Friend
в подчиненой ставлю точку после myOwner и есть там dsSD
а ругается!
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529761
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну хорошо бы посмотреть на оригинальную ругань.

А вы случаем не из MDI child формы вызываете модальную форму. Если да , то owner возвратит MDI parent. И тогда надо делать уже чуть чуть по другому.

И еще везде обязательно где у вас Fill и Update и вы работаете с таблицей spveks добавьте
вторым параметром название этой таблицы. Где то видно что это уже стоит где то нет.

Например таким образом:
Код: plaintext
1.
2.
Для Fill DataAdapter.Fill(DataSet, "spveks")
Для Update DataAdapter.Update(DataSet, "spveks")

И привидите код adpSD. DataAdapterа
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529805
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы случаем не из MDI child формы вызываете модальную форму.
да
Ну хорошо бы посмотреть на оригинальную ругань.
В экземпляре не задана ссылка на объект. (стоит Rus langpack)

И привидите код adpSD. DataAdapterа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
            Dim ocmdSD As New OleDb.OleDbCommand("spSelectVeksVyb", ocnn)
            Dim adpSD As New OleDb.OleDbDataAdapter
            Dim iKot As String
            Dim iBal As Integer = - 1 
            If Me.tbKot.Text = "1" Or Me.tbKot.Text = "2" Then
                iBal =  0 
            End If

            ocmdSD.CommandType = CommandType.StoredProcedure
            ocmdSD.Parameters.Add("@paramBal", iBal)
            ocnn.Open()
            adpSD.SelectCommand = ocmdSD
            adpSD.Fill(dsSD, "spVeks")
код хранимки приложил в .txt
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32529894
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибочка вышла, вместо этого попробуйте так:
Код: plaintext
1.
2.
3.
Dim myOwner As FormNewSd
myOwner = CType(myOwner, FormNewSd)
ugSelVeks.DataSource = myOwner.dsSD.Tables("spVeks")

пробуйте так:
Код: plaintext
1.
2.
3.
Dim myOwner As FormNewSd
myOwner = CType(Me.Owner, FormNewSd)
ugSelVeks.DataSource = myOwner.dsSD.Tables("spVeks")

Но это сработает если вы не пытаетесь открыть модальный диалог из MDI-Child формы.

И еще вопрос по логике работы: вы после того как получили выделенные строки из грида, где их изменяете? В модальной форме или в основной?
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32530194
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myOwner = CType(Me.Owner, FormNewSd)
ругань: Specified cast is not valid.
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32530197
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
открываю диалог из починенной mdi формы
выделенные в модальной форме строки редактирую уже в основной
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32530227
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит все таки из Mdi - child запускаете модальную форму.
Тогда делаем вместо этого:
Код: plaintext
1.
2.
3.
Dim myOwner As FormNewSd
myOwner = CType(Me.Owner, FormNewSd)
ugSelVeks.DataSource = myOwner.dsSD.Tables("spVeks")

Так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim myOwner As MainForm ' поставьте вместо MainForm название своего класса  главной формы
myOwner = CType(Me.Owner, MainForm)
Dim myForm as Form
Dim myFormNewSD as FormNewSd = Nothing
For each myForm in myOwner.MdiChildren
   if (myForm.Name = "FormNewSd" Then
      myFormNewSD = CType(myForm , FormNewSD)
      Exit For
   End If
Next
If myFormNewSD is nothing then
  MsgBox("Не порядок")
Else
    ugSelVeks.DataSource = myFormNewSD.dsSD.Tables("spVeks")
End if

>открываю диалог из починенной mdi формы
>выделенные в модальной форме строки редактирую уже в основной

То есть я так понял из главной формы открываете подчиненную Mdi-child и этой подчиненной открываете Modal dialog выбираете записи , возвращаетесь в подчиненную Mdi-Child и здесь их редактируете?
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32530338
hmsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
работать модальная по вновь утвержденному плану стала :) спасибо :)
правда теперь при каждом вызове модальной строки в гриде умножаются ...

То есть я так понял из главной формы открываете подчиненную Mdi-child и этой подчиненной открываете Modal dialog выбираете записи , возвращаетесь в подчиненную Mdi-Child и здесь их редактируете?
да. потом я их ещё копировать хочу
...
Рейтинг: 0 / 0
обновления из грида в базу
    #32530395
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>правда теперь при каждом вызове модальной строки в гриде умножаются

Интересно посмотреть, в очередной раз :-) , полученный код. С разъяснением что хотелось бы получить при определенных операциях.

Если надо чтобы при каждом вызове модальной формы строки в гриде очищались то можно поставить Dim dsNewSD as DataSet = dsSD.Clone() перед вызовом модальной формы.

Другим способом: можно объявить с модификтором Friend dsNewSD в форме из которой вызываете модальный диалог.
Код: plaintext
1.
Friend dsNewSD as DataSet
А в Load модальной формы тогда сделать так:
Код: plaintext
1.
2.
  myFormNewSD.dsNewSD  = myFormNewSD.dsSD.Clone() 
  ugSelVeks.DataSource = myFormNewSD.dsSD.Tables("spVeks")
Теперь при каждом запуске dsNewSD будет создаваться пустым заново с той же самой структурой что и dsSD.

Если эта функциональность ненужна, то напишите какая именно функциональность нужна. Чем подробнее все будет расписано тем лучше :-)
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 2 из 3
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / обновления из грида в базу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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