powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Связь ComboBox и таблицы БД
16 сообщений из 16, страница 1 из 1
Связь ComboBox и таблицы БД
    #36388121
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне необходимо сделать следующее:
1.Добавить в таблицу данные спомощью ComboBox
2.Проверить если ли такие записи в таблице(если есть то не добавлять новую записи в таблицу)
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36388182
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то непонятна последовательность действий

Сначала добавить, потом проверить, потом не добавлять?
Или сначала надо добавить, потом если что - удалить?

Далее - что значит "добавить с помощью комбобокса"? Добавляют с помощью команд работы с БД, а не с помощью комбобокса (гвоздь забивают молотком, а не магазином, где он продается). Может вы имели ввиду, что текст выбранного элемента надо добавить в таблицу. Ну тогда давайте опять же подробнее - что не получается? Считать данные из комбобокса? Записать данные в таблицу? Установить соединение с БД? Опять же - о какой среде идет речь? О какой БД идет речь?


И вообще, мой пост со встречными вопросами гораздо длиннее вашего вопроса. Так что давайте прекратим лениться, будем читать правила форума и подробненько все расписывать.
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913644
valdemar_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БД Mysql имеются таблицы со справочниками.
мне необходимо, что бы пользователь мог выбрать данные только из списка с поиском
Как правильно заполнить combobox: заполнять полностью всем содержимым из талицы.
или напрямую искать в БД и возвращать список строк которые соответствуют поиску?
combobox мне удалось заполнить максимум на 32765 записей т. е. если справочник увеличится более 33000 я уже не смогу заполнять combobox всем содержимым из БД.
если поиск осуществлять в БД не особо получатется это осуществить

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim sql As String, a As String
Set rs = New ADODB.Recordset
sql = "select slpu from spr_lpu where sLPU LIKE '" & Cmbx_Lpu.Text & "%'"

rs.Open sql, Frm_connect.conn, adOpenStatic, adLockReadOnly
Cmbx_Lpu.Clear
Do While Not rs.EOF
     Cmbx_Lpu.AddItem rs("sLPU").Value
     rs.MoveNext
Loop
rs.Close
ввожу букву "а" комбобокс заполняется строками начинающееся на "а", если ввести другой символ в комбобокс добявятся еще строки, пытаюсь их очистить методом Cmbx_Lpu.Clear комбобокс очищается полностью и в комбобокс ввести более 1 символа я немогу.
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913681
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valdemar_ruпытаюсь их очистить методом Cmbx_Lpu.Clear комбобокс очищается полностью и в комбобокс ввести более 1 символа я немогу.
Так перед очисткой запоминайте свойство .Text, а потом возвращайте его на место, в чем проблема?
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913735
valdemar_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
В combobox MS Form 2.0 эта конструкция работает в старом combo1 не работает пишет "out of stack space"
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim sql As String, a As String
Set rs = New ADODB.Recordset
sql = "select slpu from spr_lpu where sLPU LIKE '" & Cmbx_Lpu.Text & "%'"

k = ComboBox1.Text
ComboBox1.Clear
ComboBox1.Text = k

rs.Open sql, Frm_connect.conn, adOpenStatic, adLockReadOnly
Cmbx_Lpu.Clear
Do While Not rs.EOF
     Cmbx_Lpu.AddItem rs("sLPU").Value
     rs.MoveNext
Loop
rs.Close
когда выподающий список открыт и происходит событие ComboBox1.Clear интерфейс подвисает, вообщем отображается странно. нужно наврное как то обновить интерфейс комбобокса
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913780
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valdemar_ruкогда выподающий список открыт и происходит событие ComboBox1.Clear интерфейс подвисает, вообщем отображается странно. нужно наврное как то обновить интерфейс комбобокса
попробуйте после перезагрузки списка послать ему
Код: plaintext
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN,  1 ,  0 
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913791
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

вообще, при таком большом количестве элементов списка пользователю достаточно тяжело нормально выбирать.

Я обычно делаю отдельную формочку для выбора в которой:
- поле для ввода контекста пользователем
- под ним грид, в котором асинхронно отображаются матчи для введенного в поле значения
- несколько галочек с параметрами поиска (искать только с начала строки, чувствительность к регистру и т.п.)
- при необходимости, комбобоксы, в которых можно сузить список поиска (выбор разделов)

а то более 30 тыс строк - для комбобокса это больно круто.
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913827
valdemar_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

более 30 000 тыс. строк. я тоже так думаю поэтому и решил в базе искать.


на MS Form 2.0 эта строчка нехотит работать
Код: plaintext
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN,  1 ,  0 

в модуля объялена
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Global Const CB_FINDSTRING = &H14C
Global Const CB_SHOWDROPDOWN = &H14F
Global Const LB_FINDSTRING = &H18F
Global Const CB_ERR = (- 1 )

    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913853
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niwalke,

а мне больше нравится вариант(access 2003-2007)
позволяет искать и голову и хвост и середину с подбором
кртолько кркр*начинается с кр*крзаканчив кр*кр*гдето кр*кр*алм*где то кр(уг) алм(азный)*кр*алм*12*где то кр(уг) алм(азный) размером 12

Код: 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.
26.
27.
28.
29.
30.
'загрузка справочника 02
Private Sub Form_Load()
Dim s
s = "select * into rab from sprav"
DoCmd.RunSQL s
End Sub

Private Sub наименование_Click()
DoCmd.Openform "poisk02", без добавления и изменения,диалог
me.наименование=glob_naim
End Sub
'форма поиск
Private Sub своб_Поле_Change()
Dim aFind As String
aFind = Nz(Me.своб_Поле.Text, "")
If aFind <> "" Then
    Me.Filter = "[Наименование] Like '" & aFind & "'"
    Me.FilterOn = True
    Me.Поле.SelStart = Len(aFind) +  1 
Else
    Me.FilterOn = False
End If
End Sub
Private Sub Наименование_click()
    glob_naim= me.[Наименование] 
    docmd.close
End Sub
' в общем модуле
dim glob_naim as string

...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913899
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valdemar_ruна MS Form 2.0 эта строчка нехотит работать
А причем тут MS Form 2.0, вы ж сами говорили, что в MS Form 2.0 все и так нормально работает
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913917
valdemar_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Provaldemar_ruна MS Form 2.0 эта строчка нехотит работать
А причем тут MS Form 2.0, вы ж сами говорили, что в MS Form 2.0 все и так нормально работает
вот эта конструкция работает в MS From 2.0
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim sql As String, a As String
Set rs = New ADODB.Recordset
sql = "select slpu from spr_lpu where sLPU LIKE '" & ComboBox1.Text & "%'"

k = ComboBox1.Text
ComboBox1.Clear
ComboBox1.Text = k

rs.Open sql, Frm_connect.conn, adOpenStatic, adLockReadOnly
Cmbx_Lpu.Clear
Do While Not rs.EOF
     ComboBox1.AddItem rs("sLPU").Value
     rs.MoveNext
Loop
rs.Close

а эта не работает в MS From 2.0

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim sql As String, a As String
Set rs = New ADODB.Recordset
sql = "select slpu from spr_lpu where sLPU LIKE '" & ComboBox1.Text & "%'"

k = ComboBox1.Text
ComboBox1.Clear
ComboBox1.Text = k
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN,  1 ,  0 

rs.Open sql, Frm_connect.conn, adOpenStatic, adLockReadOnly
Cmbx_Lpu.Clear
Do While Not rs.EOF
     ComboBox1.AddItem rs("sLPU").Value
     rs.MoveNext
Loop
rs.Close
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913925
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valdemar_ru,

Тогда чем вас не устраивает первая конструкция, если она работает?
Вы сами говорили:
valdemar_ruВ combobox MS Form 2.0 эта конструкция работает в старом combo1 не работает
вам где нужно, чтоб работало?
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913936
valdemar_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
работает, но не так как надо
когда выподающий список открыт и происходит событие ComboBox1.Clear интерфейс подвисает, вообщем отображается странно. нужно наврное как то обновить интерфейс комбобокса
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913942
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
valdemar_ruShocker.Pro,
работает, но не так как надо
когда выподающий список открыт и происходит событие ComboBox1.Clear интерфейс подвисает, вообщем отображается странно. нужно наврное как то обновить интерфейс комбобокса
Комбобокс-то какой? MS Form 2.0?
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36913945
valdemar_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

да
...
Рейтинг: 0 / 0
Связь ComboBox и таблицы БД
    #36917483
valdemar_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался вроде работает, вот модет кому пригодится:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SendMessage Cmbx_Lpu.hWnd, CB_SHOWDROPDOWN,  1 , ByVal  0 & 
Cmbx_Lpu.MousePointer = vbDefault 
'Clipboard.Clear 
Static InCombo As Boolean 
Dim sql As String, CmbText As String, SelSrt As Integer
Set rs = New ADODB.Recordset
sql = "select slpu from spr_lpu where sLPU LIKE '" & Cmbx_Lpu.Text & "%'"
SelSrt = Cmbx_Lpu.SelStart 
If InCombo Then Exit Sub
    InCombo = True
    CmbText = Cmbx_Lpu.Text
    Cmbx_Lpu.Clear
    Cmbx_Lpu.Text = CmbText
    InCombo = False
    Cmbx_Lpu.SelStart = SelSrt 

If Cmbx_Lpu.Text <> "" Then
    rs.Open sql, Frm_connect.conn, adOpenStatic, adLockReadOnly
        Do While Not rs.EOF
            Cmbx_Lpu.AddItem rs("sLPU").Value
            rs.MoveNext
        Loop
    rs.Close
End If
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Связь ComboBox и таблицы БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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