Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MSFlexGrid и БД / 25 сообщений из 29, страница 1 из 2
22.07.2007, 19:39
    #34675779
jora-objora
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
Как реализовать внесение данных через FlexGrid в БД если сначала данные из БД заносились в FlexGrid ?
...
Рейтинг: 0 / 0
22.07.2007, 21:49
    #34675854
gjghjc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
По-моему никак, попробуй использовать Microsoft DataGrid Control (MSDATAGRD.OCX)
С уважением, Николай.
...
Рейтинг: 0 / 0
23.07.2007, 13:26
    #34677094
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
Я для этого на месте редактируемой ячейки подставлял textbox, придавая ему соответствующие размеры, и копировал в него значение из текущей ячейки. Потом, по нажатию Enter или LostFocus данные заносил в FlexGrid и обновлял рекордсет. Если что - могу пример закинуть.
...
Рейтинг: 0 / 0
23.07.2007, 13:28
    #34677100
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
ЗЫ: А ДатаГрид у тебя попрет только если АДО пользуешь. Если ДАО, то даже не парься.
...
Рейтинг: 0 / 0
23.07.2007, 21:15
    #34678489
jora-objora
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
IguMEN, буду очень вам благодарен если закинете пример
...
Рейтинг: 0 / 0
24.07.2007, 13:59
    #34680070
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
Не, потерял.

Добавь на форму невидимый текстбокс, скажем, text1. При даблклике на flexgrid1 (пусть, flex1) пишешь следующее:

text1.left=flex1.left+flex1.colpos (flex1.col)
text1.top=flex1.top+flex1.rowpos (flex1.row)
text1.width=flex1.colwidth(flex1.col)
text1.height=flex1.rowheight(flex1.row)
text1.text=flex1.textmatrix (flex1.row, flex1.col)
text1.visible=true

Бэкколор текстбокса можно сделать нежно голубым или желтым (шоб эффектнее було)

А следующий код пихаешь в лостфокус у текстбокса и в кейдаун текстбокса ( но только при условии, что кейкод=13)

flex1.textmatrix(flex1.row, flex1.col)=text1.text
text1.visible=false

А обновление в рекордсете - в зависимости от контрола.
...
Рейтинг: 0 / 0
24.07.2007, 14:55
    #34680339
jora-objora
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
IguMEN
flex1.textmatrix(flex1.row, flex1.col)=text1.text

при этом информация будет заноситься в flex или и в flex и БД ? мне надо второе
...
Рейтинг: 0 / 0
24.07.2007, 15:55
    #34680618
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
Во flex. Я ж написал: дальше - в зависимости от контрола.
...
Рейтинг: 0 / 0
24.07.2007, 16:38
    #34680828
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
Короче схема такая:
1) Ищецца в рекордсете запись, соответствующая нужной строке. (Надеюсь в таблице предусмотрено поле с неповторяющимися значениями?)
2) Если DAO, то Data1.recordset.edit (Для ADO ентого не надо)
3) data1.recordset.fields(flex1.col).value=text1.text (хотя, на самом деле вместо flex1.col надо ввести переменную, в которую пихается при начале редактирования значение flex1.col. Дело в том, что lostfocus у text1 может означать клик по сетке в произвольном месте, а равно смену текущего столбца.
3) data1.recordset.update

Вот и все.

Финал:

Код: plaintext
1.
Adodc1.recordset.fields(a).value=textext1.text
adodc1.recordset.update

Аналогично - для Data1 (с добавлением Data1.recordset.edit в начале)
...
Рейтинг: 0 / 0
24.07.2007, 16:42
    #34680846
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
ЗЫ: Если все-таки поля, подходящего для поиска нет, то придется сделать так

Код: plaintext
1.
data1(либо adodc1).recordset.movefirst
data1(либо adodc1).recordset.move CurRow- 1  '-CurRow - Записанное заранее значение flex1.row
...
Рейтинг: 0 / 0
24.07.2007, 16:44
    #34680864
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
ЗЗЫ: Кстати, если уж на то пошло, то и в строке flex1.textmatrix(flex1.row, flex1.col)=text1.text
надо flex1.row и flex1.col заменить на заранее введенные переменные с установленными значениями
...
Рейтинг: 0 / 0
24.07.2007, 17:37
    #34681106
jora-objora
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
мать моя женщина, ну и ужос, вроде сделал все как написано, выдает ошибку в выделенной строке

автор
Private Sub Flex1_DblClick()
Text1.Left = Flex1.Left + Flex1.ColPos(Flex1.Col)
Text1.Top = Flex1.Top + Flex1.RowPos(Flex1.Row)
Text1.Width = Flex1.ColWidth(Flex1.Col)
Text1.Height = Flex1.RowHeight(Flex1.Row)
Text1.Text = Flex1.TextMatrix(Flex1.Row, Flex1.Col)
Text1.Visible = True
Flex1.Refresh
Text1.SetFocus
End Sub

Private Sub Text1_LostFocus()
a = Flex1.Col
b = Flex1.Row
Data1.Recordset.Edit
Flex1.TextMatrix(b, a) = Text1.Text
Data1.Recordset.Fields(a).Value = Text1.Text
Data1.Recordset.Update
Text1.Visible = False
Flex1.Refresh
End Sub


ЗЫ вкратце обьясните смысл рекордсета, что оно из себя представляет
...
Рейтинг: 0 / 0
24.07.2007, 17:49
    #34681143
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
1) a и b обозначай до при появлении текстбокса, а объяви их в декларе
2) флекс рефрешить не надо
3) упущен поиск записи в рекордсете. Если ткунул в сетку - это еще не значит нашел. Читай мои последние посты.
...
Рейтинг: 0 / 0
24.07.2007, 17:51
    #34681154
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
ЗЫ: рекордсет - набор записей из таблицы, получаемый после указания рекордсорса и рефреша DAO или иных дата-контролов
...
Рейтинг: 0 / 0
24.07.2007, 19:15
    #34681412
jora-objora
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
IguMEN
1) a и b обозначай до при появлении текстбокса, а объяви их в декларе
2) флекс рефрешить не надо
3) упущен поиск записи в рекордсете. Если ткунул в сетку - это еще не значит нашел. Читай мои последние посты.
1) а можно пападробнее? )) что такое деклер?
3) это оно?
авторData1.Recordset.MoveFirst
Data1.Recordset.Move b - 1
...
Рейтинг: 0 / 0
24.07.2007, 21:47
    #34681673
jora-objora
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
ЗЫ что бы не создавать новые темы, тут спрошу.
есть текст
авторText1.Left = Flex1.CellLeft + Flex1.Left
почему при Flex1.CellLeft=15 и Flex1.Left=100 Text1.Left равняется 115,38 ??
...
Рейтинг: 0 / 0
25.07.2007, 10:24
    #34682209
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
1) Declare - место в самом верху кода, где объявляются Апишные функции и переменные.
3) именно оно
4) не cellleft, а colpos(b) - это важно
...
Рейтинг: 0 / 0
25.07.2007, 10:25
    #34682213
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
Перепутал: не b, а "a"
...
Рейтинг: 0 / 0
25.07.2007, 11:33
    #34682398
jora-objora
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
1)ошибка возникает там же грит "Field cant be updated"
авторPrivate Sub Text1_LostFocus()
a = Flex1.Col
b = Flex1.Row
Data1.Recordset.MoveFirst
Data1.Recordset.Move b - 1
Data1.Recordset.Edit
Flex1.TextMatrix(b, a) = Text1.Text
Data1.Recordset.Fields(a).Value = Text1.Text
Data1.Recordset.Update
Text1.Visible = False
End Sub
2) таже фигня (
авторText1.Left = Flex1.ColPos(a) + Flex1.Left
Flex1.ColPos(a) = 960
Flex1.Left = 300
Text1.Left = 1259.38 ???
...
Рейтинг: 0 / 0
25.07.2007, 12:12
    #34682572
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
1) "a" & "b" должны определяться в тот момент, когда text1 становится видимым, потому что в lostfocus это уже другие координаты.
2) не парься
...
Рейтинг: 0 / 0
25.07.2007, 12:22
    #34682610
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
Короче, я запустил вот это и у меня все работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public a As Integer, b As Integer

Private Sub Flex1_DblClick()
Text1.Left = Flex1.Left + Flex1.ColPos(Flex1.Col)
Text1.Top = Flex1.Top + Flex1.RowPos(Flex1.Row)
Text1.Width = Flex1.ColWidth(Flex1.Col)
Text1.Height = Flex1.RowHeight(Flex1.Row)
Text1.Text = Flex1.TextMatrix(Flex1.Row, Flex1.Col)
Text1.Visible = True
a = Flex1.Col
b = Flex1.Row
Text1.SetFocus
End Sub

Private Sub Text1_LostFocus()
Data1.Recordset.Edit
Flex1.TextMatrix(b, a) = Text1.Text
Data1.Recordset.Fields(a).Value = Text1.Text
Data1.Recordset.Update
Text1.Visible = False
Flex1.Refresh
End Sub
...
Рейтинг: 0 / 0
25.07.2007, 13:05
    #34682801
jora-objora
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
IguMENКороче, я запустил вот это и у меня все работает:

тупо все скопировал, вставил, всеравно та же ошибка Field cant be updated и текст появляется не на ячейке, а збоку. можешь скинуть куда-нить свою прогу?
...
Рейтинг: 0 / 0
25.07.2007, 13:27
    #34682879
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
Мож у тебя не поставлен 6 сервиспак? Хотя вряд ли из-за этого...
...
Рейтинг: 0 / 0
25.07.2007, 13:27
    #34682881
IguMEN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
ЗЫ: Вот мой вариант
...
Рейтинг: 0 / 0
25.07.2007, 13:47
    #34682959
jora-objora
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSFlexGrid и БД
это уже интересно, в Вашей версии помимо ошибки Field cant be updated , появилась еще
Data type conversation error ))
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MSFlexGrid и БД / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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