powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MSFLEXGRID и Recordset
19 сообщений из 19, страница 1 из 1
MSFLEXGRID и Recordset
    #36792242
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
открываю программу заполняю grid
вношу изменения в ячейку нажимаю enter срабатывает такой код
Код: plaintext
1.
2.
rs.Fields("Quant").Value = MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel,  6 )
rs.Update
rs.Requery
хотелось бы узнать мне в любом случае придется заново заполнять grid
или есть какие способы обновлять именно ту запись в grid-e которая мне нужна?
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36792250
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

Во-первых , я не понял, зачем requery. Вроде после update у тебя там уже новое значение.

Во-вторых, зачем тебе обновлять сетку, если в сетке у тебя уже новое значение, раз ты его именно оттуда и берешь.

В-третьих, кто тебе мешает обновить одну строку, если захочется?
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36792257
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admподскажите что делать если у меня в
Код: plaintext
MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel,  0 )
значение 00016 и я пытаюсь сделать так
Код: plaintext
a = "KOD1 =" & MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel,  0 )
то вместо KOD1 =00016
basic мне выдает KOD1 =16
ситуация не воспроизводится:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Command1_Click()

Dim s As String
Me.MSFlexGrid1.TextMatrix( 1 ,  1 ) = "0016"
s = "Code=" + Me.MSFlexGrid1.TextMatrix( 1 ,  1 )
MsgBox s

End Sub
видимо, ты все-таки не весь код приводишь.
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36792334
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
>Во-первых , я не понял, зачем requery. Вроде после update у тебя там уже новое значение
вставил не подумав
>Во-вторых, зачем тебе обновлять сетку, если в сетке у тебя уже новое значение, раз ты его именно оттуда и берешь.
мне это для страховки надо , вдруг не запишется значение
использую такой код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
rs.MoveFirst
rs.Find "KOD1 =" & MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel,  0 )
If rs.EOF Then
        
Else
        rs.Fields("Quant").Value = MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel,  6 )
        rs.Update
End If
может быть такое что не сработает код , а пользователь будет думать что все нормально
>В-третьих, кто тебе мешает обновить одну строку, если захочется?
пример можно?
>видимо, ты все-таки не весь код приводишь.
это видимо мне спать пора было ))
работает нормально
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36792367
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admмне это для страховки надо , вдруг не запишется значение

может быть такое что не сработает код , а пользователь будет думать что все нормально

Если не сработает код, возникнет ошибка времени выполнения. Надеюсь, ты ошибки как ЦЭ не пропускаешь.

aduka05adm>В-третьих, кто тебе мешает обновить одну строку, если захочется?
пример можно?

Пример чего? У тебя есть некий цикл, который заполняет сетку из рекордсета (построчно, полагаю). Заполнение одной строки и есть требуемый пример.
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36792382
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЕсли не сработает код, возникнет ошибка времени выполнения. Надеюсь, ты ошибки как ЦЭ не пропускаешь.
у меня ошибки там и не будет как таковой
просто эта строчка не сработает
Код: plaintext
rs.Find "KOD1 =" & MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel,  0 )
и все ) ниче не запишется
Shocker.ProПример чего? У тебя есть некий цикл, который заполняет сетку из рекордсета (построчно, полагаю). Заполнение одной строки и есть требуемый пример.
ща попробую
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36792384
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
сделал так вроде работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
rs.MoveFirst
rs.Find "KOD1 =" & MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel,  0 )
If rs.EOF Then
        
Else
        rs.Fields("Quant").Value = MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel,  6 )
        rs.Update
        MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel,  6 ) = rs.Fields("Quant").Value
End If
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36792389
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admсделал так вроде работает
масло масляное

если у тебя Find не сработает, у тебя эта ветка условия все равно не выполнится.
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36792407
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm, надеюсь, ты ошибки как ЦЭ не пропускаешь???
думаю посмотрю чем интерисуется элита, и тут меня всунули
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36792597
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proмасло масляное
не понял к чему
Shocker.Proесли у тебя Find не сработает, у тебя эта ветка условия все равно не выполнится.
надо будет просто добавить
Код: plaintext
1.
If rs.EOF Then
....очищаем строку..
и все будет нормально
вообще срабатывает быстро меня устраивает
чем adodc лучше даже)
Ципихович Эндрюэлита
сильно
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36792602
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Proмасло масляное
не понял к чему
Код: plaintext
1.
2.
        rs.Fields("Quant").Value = MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel,  6 )
        rs.Update
        MSFlexGrid1.TextMatrix(MSFlexGrid1.RowSel,  6 ) = rs.Fields("Quant").Value
третья строка не имеет смысла, потому что записывает в ячейку то, что и так там было.

ЗЫ: Исключением может быть, если в БД поле "Quant" не текстовое (к примеру, числовое). В ячейке до этих манипуляций будет "005", после - "5". Но я полагаю, что ты достаточно читал меня, чтобы знать, что неявные преобразования типов - это большое зло.
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36792629
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proтретья строка не имеет смысла, потому что записывает в ячейку то, что и так там было.
ну да )), спасибо
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36860053
valdemar_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заполняю имена полей MSHFlexgrid таким вот образом.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Dim I As Integer
Dim sql As String
Set rs = New ADODB.Recordset
               Frm_Registr.Show
    sql = "select * from rezept_rus"
With rs
 oткрыть таблицу:
.Open sql, Frm_connect.conn, adOpenKeyset, adLockOptimistic
End With

If rs.BOF = True Or rs.EOF = True Then
Else
    For I =  0  To rs.Fields.Count -  1 
        Frm_Registr.MSHFlexGrid1.TextMatrix( 0 , I) = rs.Fields(I)
    Next I
End If
end Sub
Во время выполнения имеется возможность поменять поля местами к примеру: (Поле1, Поле2)
(Поле2, Поле1). Можно ли осуществить после смены полей местами, чтобы данные из базы данных падали в нужное поле.? Поля местами меняются, а их индексы нет. если можно подскажите каким образом.
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36860865
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valdemar_ru,

либо объясните, кто вам мешает писать нужное поле в нужный столбец, либо сформулируйте задачу поточнее.

ЗЫ: Лично у меня есть некая матрица соответствия поля БД и столбца сетки. Пользователь может менять местами столбцы сетки, из базы поля могут браться тоже в произвольном порядке, заполнение идет по матрице.
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36861434
valdemar_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Вы правы мне это и нужно поля базы идут 1,2,3,4 а поля допустим MSHFlexgrid 2,1,4,3. Ну и во время выполнения когда мышкой меняяешь места полями MSHFlexgrid соответсвенно тоже чтобы каждое полея заполнялось так как нужно. Подскажите пожалуйста хотябы присмерно как можно это реализовать ?
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36861507
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valdemar_ru,

Ну, очевидно, нужен массив соответствий между именем поля БД и номером столбца грида. При изменении порядка столбцов - реорганизовывать массив.

Вообще, если заголовки столбцов сетки у вас имеются и они уникальные - то все проще. Можно завести коллекцию соответствия заголовков столбцов сетки и полей таблицы и не надо будет реорганизовывать массив. Просто смотрите заголовок и от него отталкиваетесь. А можно даже еще смешнее - сделать алиасы полей в выборке из БД строго соответствующие заголовкам столбцов сетки. Тогда вообще можно обойтись без массива - при заполнении сетки смотрите на заголовок столбца и берете из рекордсета именно это поле.
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36861627
valdemar_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, Если можно пожалуйста примерчик.?
Код: 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.
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Dim I As Integer
Dim sql1 As String
Set rs = New ADODB.Recordset
sql = "select * from rezept"
With rs
                    'oткрыть таблицу:
                    .Open sql, Frm_connect.conn, adOpenKeyset, adLockOptimistic
                End With
Dim a
                    Do Until rs.EOF
                        a =  1 
                        I =  0 
                            For I =  0  To  1 
                                Select Case rs.Fields(I).Name
                                    Case Frm_Registr.MSHFlexGrid1.TextMatrix( 0 ,  0 )
                                        Frm_Registr.MSHFlexGrid1.TextMatrix(Frm_Registr.MSHFlexGrid1.Rows -  1 ,  0 ) = rs.Fields(I)
                                    Case Frm_Registr.MSHFlexGrid1.TextMatrix( 0 ,  1 )
                                        Frm_Registr.MSHFlexGrid1.TextMatrix(Frm_Registr.MSHFlexGrid1.Rows -  1 ,  1 ) = rs.Fields(I)
                                End Select
                            Next I
                        rs.MoveNext
                        Frm_Registr.MSHFlexGrid1.Rows = Frm_Registr.MSHFlexGrid1.Rows +  1 
                    Loop
 rs.Close: Set rs = Nothing
end sub
У меня таким образом получилось заполнить по соответсвиям полей FlexGrida и талблицы БД (незнаю можнол и таким образом заполнять ?).
Но теперь проблема имена полей сейчас совпадают. Поля в таблице БД на английском, но мне надо чтобы во FlexGrid имена полей на русском, но тогда с помощью выше описанного кода реализовать у меня не получается. Надо организовать соотвествие полей ? непонимаю каким образом.
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36861699
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valdemar_ru,

sql = "select * from rezept"

Код: plaintext
sql = "select Field1 AS Поле1, Field2 AS Поле2, Name AS [Наименование товара] from rezept"
...
Рейтинг: 0 / 0
MSFLEXGRID и Recordset
    #36861790
valdemar_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, Оказыается все гораздо проще. Спасибо
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MSFLEXGRID и Recordset
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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