|
|
|
не могу разобраться с MSHFlexGrid
|
|||
|---|---|---|---|
|
#18+
До сих пор не могу разобраться с обновлением 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 помогите, пожалуйста, решить эту проблему! Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 11:58:01 |
|
||
|
не могу разобраться с MSHFlexGrid
|
|||
|---|---|---|---|
|
#18+
Что то это все как-то странно. Ты про события знаешь? В форме деталей компаннии объявляем новое событие (DataChanged) В форме компании, при изменении (в событии при выходе как у тебя) генерируем событие RaiseEvent DataChanged В верхней форме - списке компаний - обрабатываем это событие. В обработчике - процедура перезагрузки новых данных в форму. Фсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 12:20:00 |
|
||
|
не могу разобраться с MSHFlexGrid
|
|||
|---|---|---|---|
|
#18+
Написала я с событием, и все равно та же история... :( Private Sub frmComp_DataChanged() rst.Requery Set MSHFlexGrid1.DataSource = rst refr_Grid refr_Grid2 End Sub на строке SET сетка вроде обновляется (группы раскрываются), а данные в ней старые :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 13:21:49 |
|
||
|
не могу разобраться с MSHFlexGrid
|
|||
|---|---|---|---|
|
#18+
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 ..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 12:25:17 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=33045762&tid=2167857]: |
0ms |
get settings: |
6ms |
get forum list: |
19ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
59ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 325ms |

| 0 / 0 |
