Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Отсоединенный набор Добавлено: 14.02.07 15:51  

Автор вопроса:  pstrkim
Помогите найти ошибку. Есть форма с отсоединяемым набором записей. При выгрузке формы изменения надо сохранить.(Форма открывается экземплярами).

Dim db As New ADODB.Connection
Dim rs As New ADODB.Recordset
Private Sub Form_Load()
    db.Open "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;dsn=db12;uid=;pwd=;"
    
    rs.ActiveConnection = db
    rs.CursorLocation = adUseClient
    rs.CursorType = adOpenStatic
    rs.LockType = adLockOptimistic
    rs.Source = "SHAPE {SELECT StructureID,StructureName,ProductTypeName,StructurePrice FROM Structures} AS ParentCMD APPEND ({SELECT StructureDetails.StructureID,StructureDetails.RawName,StructureDetails.Part,[RawPrice]*[Part] AS PartPrice FROM StructureDetails INNER JOIN Raw ON Raw.RawName = StructureDetails.RawName} AS ChildCMD RELATE StructureID TO StructureID) AS ChildCMD"
    rs.Open
    Set rs.ActiveConnection = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
            rs.ActiveConnection = db
            rs.MarshalOptions = adMarshalModifiedOnly
            rs.UpdateBatch
End Sub

Однако изменения не сохраняются!

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #1 Добавлено: 14.02.07 16:10
rs.UpdateBatch
DoEvents

Ответить

Номер ответа: 2
Автор ответа:
 pstrkim



Вопросов: 13
Ответов: 16
 Профиль | | #2 Добавлено: 14.02.07 16:36
Ну и что? Результат тот же самый

Ответить

Номер ответа: 3
Автор ответа:
 pstrkim



Вопросов: 13
Ответов: 16
 Профиль | | #3 Добавлено: 14.02.07 16:37
Не помогает!

Ответить

Номер ответа: 4
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #4 Добавлено: 14.02.07 19:03
Дык и код неполный, хз вообще что с ним делать. Лучше выкладывай весь проект, может поможем

Ответить

Номер ответа: 5
Автор ответа:
 pstrkim



Вопросов: 13
Ответов: 16
 Профиль | | #5 Добавлено: 15.02.07 12:44
Ok!
Есть Главная форма frmMain (Родительская), Форма со списком структур frmStructNav (Дочерняя), Форма редактирования струтуры frmStructInp (Дочерняя), Главный модуль mdlMain.
в frmMain - просто строка меню.
mdlMain:

Public cn As New ADODB.Connection
Public rsStri As New ADODB.Recordset
Public rsStrn As New ADODB.Recordset

Sub Main()

        cn.CursorLocation = adUseClient
        cn.Open "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;dsn=db12;uid=;pwd=;"
        
        rsStri.ActiveConnection = cn
        rsStri.CursorLocation = adUseClient
        rsStri.CursorType = adOpenKeyset
        rsStri.LockType = adLockBatchOptimistic
        rsStri.Source = "SHAPE {SELECT StructureID,StructureName,ProductTypeName,StructurePrice FROM Structures} AS ParentCMD APPEND ({SELECT StructureDetails.StructureID,StructureDetails.RawName,StructureDetails.Part,[RawPrice]*[Part] AS PartPrice FROM StructureDetails INNER JOIN Raw ON Raw.RawName = StructureDetails.RawName} AS ChildCMD RELATE StructureID TO StructureID) AS ChildCMD"
        rsStri.Open
        
        rsStrn.ActiveConnection = cn
        rsStrn.Source = "Select * from Structures"
        rsStrn.CursorType = adOpenKeyset
        
        frmMain.Show
        
End Sub

frmStructNav:

Private Sub Form_Load()
  'Создание переменной списка
    Dim lv As ListView
    Set lv = lvMain
  'Создание колонок списка
    lv.ColumnHeaders.Clear
    Dim clmX As ColumnHeader
    Dim itmX As ListItem
    Set clmX = lv.ColumnHeaders.Add(, "Product", "Товар";)
    Set clmX = lv.ColumnHeaders.Add(, "Price", "Цена";)
    lv.GridLines = True
    lv.FullRowSelect = True
  'Заполнение списка
        rsStrn.Open
        lv.ListItems.Clear
        Dim nCounter As Integer

    For nCounter = 1 To rsStrn.RecordCount
    
        Set itmX = lv.ListItems.Add(, , rsStrn.Fields(1))
            itmX.SubItems(1) = FormatCurrency(rsStrn.Fields("StructurePrice";), 2)
            rsStrn.MoveNext
            
    Next nCounter
        rsStrn.Close
    
End Sub

'Открытие формы frmStructInp
Private Sub lvMain_DblClick()

    Dim frmSI As New frmStructInp
    frmSI.Show
    
End Sub

frmStructInp:

Dim bChanged As Boolean

Private Sub Form_Load()
    'заполнение таблицы в форме
        rsStri.MoveFirst
        rsStri.Find "StructureName = '" & frmStructNav.lvMain.SelectedItem.Text & "'"
    'Set rsStri.ActiveConnection = Nothing
    Set StructureGrid.DataSource = rsStri("ChildCMD";).UnderlyingValue
    'макет таблицы
    With StructureGrid
        .Columns(0).Visible = False
        .Columns(1).Button = True
        .Columns(1).Locked = True
        .Columns(1).Width = 3500
        .Columns(2).NumberFormat = "#0.00"
        .Columns(2).Width = 600
        .Columns(3).NumberFormat = "#0.00"
        .Columns(3).Width = 600
        .Columns(3).Locked = True
    End With
    'заполнение полей формы
    Dim n As Integer
    For n = 0 To txtFields.Count - 1
        Set txtFields(n).DataSource = rsStri
            txtFields(n).DataField = rsStri.Fields(n).Name
    Next n
    Set rsStri.ActiveConnection = Nothing
End Sub

'при выгрузке запрос на сохранение изменений
Private Sub Form_Unload(Cancel As Integer)
  
  Dim i As Integer
  
  If bChanged Then
    i = MsgBox("Сохранить?", vbYesNo, "Сохранение";)
      If i = vbYes Then
        Set rsStri.ActiveConnection = cn
            rsStri.MarshalOptions = adMarshalModifiedOnly
            rsStri.UpdateBatch
      End If
  End If
  
End Sub

'запомнить изменение в таблице
Private Sub StructureGrid_Change()
    bChanged = True
End Sub

В общем если создаешь rsStri в главном модуле - данные сохраняются, а если в модуле frmStructInp - то не сохраняются

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам