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

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

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


И вообще, мой пост со встречными вопросами гораздо длиннее вашего вопроса. Так что давайте прекратим лениться, будем читать правила форума и подробненько все расписывать.
...
Рейтинг: 0 / 0
22.10.2010, 07:03
    #36913644
valdemar_ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь ComboBox и таблицы БД
БД 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
22.10.2010, 08:42
    #36913681
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь ComboBox и таблицы БД
valdemar_ruпытаюсь их очистить методом Cmbx_Lpu.Clear комбобокс очищается полностью и в комбобокс ввести более 1 символа я немогу.
Так перед очисткой запоминайте свойство .Text, а потом возвращайте его на место, в чем проблема?
...
Рейтинг: 0 / 0
22.10.2010, 09:21
    #36913735
valdemar_ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь ComboBox и таблицы БД
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
22.10.2010, 09:55
    #36913780
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь ComboBox и таблицы БД
valdemar_ruкогда выподающий список открыт и происходит событие ComboBox1.Clear интерфейс подвисает, вообщем отображается странно. нужно наврное как то обновить интерфейс комбобокса
попробуйте после перезагрузки списка послать ему
Код: plaintext
SendMessage Combo1.hwnd, CB_SHOWDROPDOWN,  1 ,  0 
...
Рейтинг: 0 / 0
22.10.2010, 10:01
    #36913791
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь ComboBox и таблицы БД
Shocker.Pro,

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

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

а то более 30 тыс строк - для комбобокса это больно круто.
...
Рейтинг: 0 / 0
22.10.2010, 10:16
    #36913827
valdemar_ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь ComboBox и таблицы БД
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
22.10.2010, 10:25
    #36913853
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь ComboBox и таблицы БД
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
22.10.2010, 10:40
    #36913899
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь ComboBox и таблицы БД
valdemar_ruна MS Form 2.0 эта строчка нехотит работать
А причем тут MS Form 2.0, вы ж сами говорили, что в MS Form 2.0 все и так нормально работает
...
Рейтинг: 0 / 0
22.10.2010, 10:44
    #36913917
valdemar_ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь ComboBox и таблицы БД
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
22.10.2010, 10:47
    #36913925
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь ComboBox и таблицы БД
valdemar_ru,

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

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

Код: 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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Связь ComboBox и таблицы БД / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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