powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / TextBox и ADODB.Recordset
10 сообщений из 10, страница 1 из 1
TextBox и ADODB.Recordset
    #33835291
Юрий_Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем. У мены такая проблемма, если конечно она таковой является:

На форме есть 2 textBox а. Источником данных для обоих является один ADODB.recordeset и соответственно определенные его столбцы.

Ситуация: Ввожу данные в box1, затем в box2 и не выходя из box2 в отладке делаю recordset.UpdateBacth.

Обнаруживаю, что в исходной таблице (SQL server 2000) в поле, связанном с Вох1 данные появились, а в том, что связано с вох2 (из которого я не вышел после ввода данных) стоит null. Но в отладке-то свежее значение вох2 просматривается! Пробовал setfocus ом поиграть-то же самое.

Какой выход из этой ситуации, кто-нибудь знает?
...
Рейтинг: 0 / 0
TextBox и ADODB.Recordset
    #33835665
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ваш рекордсет открыт на единственной записи, и привязывается к элементам ввода данных, надо перед привязкой выполнить rs.MoveFirst.
...
Рейтинг: 0 / 0
TextBox и ADODB.Recordset
    #33841286
Юрий_Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения, маленькая неточность. Ещё есть addnew. Вот код и ситуация с ним такая же печальная:

Option Explicit
Dim r1 As New ADODB.Recordset

Private Sub Command3_Click() 'прикрепление к источнику
r1.Open "Select * FROM tblUnit", conn, adOpenKeyset, adLockOptimistic
r1.MoveFirst
r1.AddNew
Set txt1.DataSource = r1
End Sub
'попытка обновить после ввода в поле некого значения
'обновление txt1 ни к чему не приводит
Private Sub txt1_DblClick()
r1.UpdateBatch
End Sub

Далее вылетает сообщение про обработчик, который не допускает повторные коды. Заранее спасибо.
...
Рейтинг: 0 / 0
TextBox и ADODB.Recordset
    #33841320
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Set txt1.DataSource = r1
DataField еще нужен новерное
попробуй установи txt1.DataSource и txt1.DataField
перед Addnew
...
Рейтинг: 0 / 0
TextBox и ADODB.Recordset
    #33841337
Юрий_Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataField установлен на странице свойств и остается неизменным. (?)
...
Рейтинг: 0 / 0
TextBox и ADODB.Recordset
    #33841389
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поменяй
r1.UpdateBatch
на это
r1.Save
...
Рейтинг: 0 / 0
TextBox и ADODB.Recordset
    #33841499
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TIKOпоменяй
r1.UpdateBatch
на это
r1.SaveЭто для сохранения рекордсета в файл и к проблеме отношения не имеет.
Юрий_Ш Это такое поведение стандартного биндинга и оно никак не лечится. Пиши свой класс, который при сохранении будет заполнять рекордсет значениями из контролов и наоборот. Или бери мой.
...
Рейтинг: 0 / 0
TextBox и ADODB.Recordset
    #33841625
Фотография _bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока не уберешь фокус из текстбокса, значение из него не считаешь, просто переведи фокус и все
...
Рейтинг: 0 / 0
TextBox и ADODB.Recordset
    #33841647
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два способа привязки контролов к единичной записи:
Через свойство DataSource или через BindingColleciton.
Пишу не с работы, поэтому могут быть неточности.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
'Используя DataSource
Dim rs as ADODB.recordset

Public sub OpenOnNewRecord
  set rs= new ADODB.Recordset
'Нам не надо фетчить записи из таблицы, поэтому открываем на несуществующей записи 
  rs.Open "Select * FROM tblUnit Where ID = -1", conn, adOpenStatic, adLockBatchOptimistic
  rs.AddNew  '"ID", x  ' Это - если значение первичного ключа известно заранее
'Если используется счетчик в качестве первичного ключа, придется чуть хитрее
  rs.UpdateButch
  rs.Resinq
  Set txt1.DataSource = rs
  Set txtXX.DataSource = rs  'все контролы - так же
end sub

private sub btnOK_Click()
  Sendkeys "+{Tab}"  'Чтобы значение из последнего измененного текстбокса попало в рекордсет
'(не помню, отработает ли Validate при получении фокуса кнопкой)
  Sendkeys "{Tab}"
  rs.UpdateButch
end sub
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
'Используя BindingCollection
Dim rs as ADODB.recordset
dim bnd1 as BindingCollection

Public sub OpenOnNewRecord
  set rs= new ADODB.Recordset
  rs.Open "Select * FROM tblUnit Where ID = -1", conn, adOpenStatic, adLockBatchOptimistic
'Нам не надо фетчить записи из таблицы, поэтому открываем на несуществующей записи 
  rs.AddNew  '"ID", x  ' Это - если значение первичного ключа известно заранее
'Если используется счетчик в качестве первичного ключа, придется чуть хитрее
  rs.UpdateButch
  rs.Resinq
  Set bnd1.DataSource = rs
  bnd1.Add txt1, "Text", "ПолеРекодсета"
  bnd1.Add txtXXX, "Text", "ПолеРекодсетаXXX"
end sub

private sub btnOK_Click()
  Sendkeys "+{Tab}"  'Чтобы значение из последнего измененного текстбокса попало в рекордсет 
'(не помню, отработает ли Validate при получении фокуса кнопкой)
  Sendkeys "{Tab}"
  rs.UpdateButch
end sub
BindingCollection имеет то приемущество, что можно забиндить любое свойство любого контрола.
...
Рейтинг: 0 / 0
TextBox и ADODB.Recordset
    #33842209
Юрий_Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob: SetFocus не помогает
Antonariy спасибо
Начинаю штудировать
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / TextBox и ADODB.Recordset
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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