Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / не могу разобраться с MSHFlexGrid / 4 сообщений из 4, страница 1 из 1
03.05.2005, 11:58:01
    #33045762
Aboudy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу разобраться с MSHFlexGrid
До сих пор не могу разобраться с обновлением NSHFleхGrid :(
У меня две формы - список компаний и отдельная компания.
Двойным шелчком по сетке в списке компаний открывается форма компании.
Если в данных компании сделаны изменения, список компаний должен обновиться.
Код:

' frmCompanies - список компаний

Private Sub Form_Load()
Dim strCNN, strCnn2, strSQL, strSqlP As String
strCnn2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Dialog.PubFilePath & ";Persist Security Info=False"
strSqlP = "Select * From Projects"
Set cnn1 = New ADODB.Connection
Set rst = New ADODB.Recordset
Set cnn2 = New ADODB.Connection
Set rsPrj = New ADODB.Recordset
Me.Width = 9600
strCNN = "PROVIDER=MSDataShape;DATA PROVIDER=MICROSOFT.JET.OLEDB.4.0;Data Source=" & Dialog.PubFilePath & ";Mode=ReadWrite;Persist Security Info=False;Jet OLEDB:Database Locking Mode=3;"
strSQL = "SHAPE ( SHAPE {SELECT * FROM `Company`} AS Company APPEND ({SELECT * FROM `Projects`} AS Projects RELATE 'ID' TO 'CountryID') AS Projects) COMPUTE Company BY 'GroupName'"
cnn1.Open strCNN
cnn2.Open strCnn2
rst.Open strSQL, strCNN, adOpenDynamic, adLockBatchOptimistic, adCmdText
rsPrj.Open strSqlP, strCnn2, adOpenDynamic, adLockBatchOptimistic, adCmdText
Set MSHFlexGrid1.DataSource = rst
End Sub

Private Sub MSHFlexGrid1_dblClick()
Dim cmpID, vrGn
If MSHFlexGrid1.BandLevel = 1 Then
MSHFlexGrid1.Col = 2
cmpID = MSHFlexGrid1.Object
frmCompany.ShowMe (cmpID)
ElseIf MSHFlexGrid1.BandLevel = 0 Then
MSHFlexGrid1.Col = 1
vrGN = MSHFlexGrid1.Object
GroupForm.ShowMe (vrGN)
End If
End Sub

' frmCompany - компания

Public Sub ShowMe(objID As Long)
cmpID = objID
Me.Show
End Sub

Private Sub Form_Load()
Dim strCNN, strSQL As String
Dim n As Integer
Set rst = New ADODB.Recordset
Set cnn = New ADODB.Connection
strSQL = "SHAPE {select ID,GroupName,Name,ContactPerson,Phone,Fax,Address,Email from Company Where [ID] Like " & cmpID & "} AS ParentCMD APPEND ({Select * From Projects Order by ProjectID} AS ChildCMD RELATE ID TO CompanyID) AS ChildCMD"
strCNN = "Provider=MSDataShape.1;Persist Security Info = False;Data Source=" & Dialog.PubFilePath & ";Data Provider=Microsoft.Jet.OLEDB.3.51"
cnn.Open strCNN
rst.Open strSQL, strCNN, adOpenDynamic, adLockOptimistic, adCmdText
Set grdDataGrid.DataSource = rst("ChildCMD").UnderlyingValue
For n = 0 To 6
Set txtFields(n).DataSource = rst
Next n
Set Label1.DataSource = rst

Private Sub cmdClose_Click()
Dim mbRes
If ifSaved <> 1 Then
msgRes = MsgBox("Do you want to save your changes?", vbYesNoCancel)
If msgRes = vbYes Then
rst.Update 'Batch adAffectAll
frmCompanies.rst.Requery
Set frmCompanies.MSHFlexGrid1.DataSource = frmCompanies.rst
ElseIf msgRes = vbNo Then
rst.CancelUpdate
End If
Unload Me
Else: Unload Me
End If
frmCompanies.refr_Grid
frmCompanies.refr_Grid2
End Sub

помогите, пожалуйста, решить эту проблему!
Спасибо!
...
Рейтинг: 0 / 0
03.05.2005, 12:20:00
    #33045833
Dats
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу разобраться с MSHFlexGrid
Что то это все как-то странно.
Ты про события знаешь?
В форме деталей компаннии объявляем новое событие (DataChanged)
В форме компании, при изменении (в событии при выходе как у тебя) генерируем событие RaiseEvent DataChanged
В верхней форме - списке компаний - обрабатываем это событие.
В обработчике - процедура перезагрузки новых данных в форму.
Фсе.
...
Рейтинг: 0 / 0
03.05.2005, 13:21:49
    #33046011
Aboudy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу разобраться с MSHFlexGrid
Написала я с событием, и все равно та же история... :(

Private Sub frmComp_DataChanged()
rst.Requery
Set MSHFlexGrid1.DataSource = rst
refr_Grid
refr_Grid2
End Sub

на строке SET сетка вроде обновляется (группы раскрываются), а данные в ней старые :(
...
Рейтинг: 0 / 0
04.05.2005, 12:25:17
    #33047833
Dats
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу разобраться с MSHFlexGrid
Aboudy
Private Sub cmdClose_Click()
Dim mbRes
If ifSaved <> 1 Then
msgRes = MsgBox("Do you want to save your changes?", vbYesNoCancel)
If msgRes = vbYes Then
------------------------------------

------------------------------------
rst.Update 'Batch adAffectAll
frmCompanies.rst.Requery
Set frmCompanies.MSHFlexGrid1.DataSource = frmCompanies.rst
ElseIf msgRes = vbNo Then
rst.CancelUpdate
End If
Unload Me
Else: Unload Me
End If
frmCompanies.refr_Grid
frmCompanies.refr_Grid2
End Sub

Может я конечно все нафиг позабывал, но по-моему ты никаких изменений в рекордсет и не вносишь. Все изменения ты делаешь в гриде. А перегнать их обратно? Типа такой конструкции. rst.Edit() Изменяем поля. rst.Update()
Ну или Через SQL - "UPDATE ..."
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / не могу разобраться с MSHFlexGrid / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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