Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2012, 18:19   #1
@лeся
Пользователь
 
Аватар для @лeся
 
Регистрация: 04.01.2012
Сообщений: 44
По умолчанию Как сделать "выборку" данных из БД Access в Word?

Т.е. есть форма,в котором помимо всего есть listbox
который хотелось бы заполнить из mdb
в мдб предполагается заполнить таблицу в таком виде
три колонки, определяющая -языковая.

Lang Name Nr_Lic
RUS Иванов 1234
ENG Ivanov 1234
RUS Петров 54654
ENG Petrov 54654

так вот хочу что бы в Listbox заполнялись фамилии,и при выборе определенной в соседнем textbox( к примеру txt_Nr_Lic) выводился номер.

проблема в чем?проблема в том что еще не было опыта подключения к базе
п.с. база уже существует

кое-где,накопала пример кода, пытаюсь в Userform_inicialize вставить процедуру Call , но что то не получается..

Код:
Private sTableName As String


Private Sub UserForm_Initialize()
        Call ReadListLicens(GetSubstringMidSeparator(sLang, "-", 2))
End Sub


Private Sub ReadListLicens(sField As String)

'Var
    Dim sPathDB As String
    Dim objCon As New ADODB.Connection
    Dim objRecSet As New ADODB.Recordset

'Begin
    
    'определение наименование таблицы для считывания названий документов
    sTableName = "CHEEF_LICENSE"
    
    'путь 
    sPathDB = \\my.mdb
    If sPathDB = "?" Then
        MsgBox "Не найден путь к БД ."
        Set objCon = Nothing
        Exit Sub
    End If
    
    'обеспечение перемещения по набору в любом направлении
    objRecSet.CursorType = adOpenStatic
    
    'настройка и открытие объекта Connection
    objCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                              "Data Source=" & sPathDB & ";" & _
                              "Persist Security Info=False"
    objCon.Open
    
    'открытие набора RecordSet на основании запроса
    objRecSet.Open "SELECT * FROM " & sTableName, objCon
    
    'проверка не пустой ли созданный набор RecordSet
    If objRecSet.EOF = True And objRecSet.BOF = True Then
        MsgBox "Таблица не содержит записей!"
        Set objCon = Nothing
        Set objRecSet = Nothing
        Exit Sub
    End If
    
    'переход в начало набора
    objRecSet.MoveFirst
    
    'заполнение списка на форме перечнем документов
    Do Until objRecSet.EOF
        Me.ListBox_License.AddItem (objRecSet.Fields(sField))
        objRecSet.MoveNext
    Loop
    
    Set objCon = Nothing
    Set objRecSet = Nothing
    
End Sub
@лeся вне форума Ответить с цитированием
Старый 02.03.2012, 13:18   #2
@лeся
Пользователь
 
Аватар для @лeся
 
Регистрация: 04.01.2012
Сообщений: 44
По умолчанию

ни у кого нет мыслей?)
@лeся вне форума Ответить с цитированием
Старый 06.03.2012, 11:20   #3
@лeся
Пользователь
 
Аватар для @лeся
 
Регистрация: 04.01.2012
Сообщений: 44
По умолчанию

если кому нужно нашла нечто похожее
http://unmail22.narod.ru/VB.NET/Regions_vb.html

спасибо автору )
@лeся вне форума Ответить с цитированием
Старый 07.03.2012, 12:07   #4
@лeся
Пользователь
 
Аватар для @лeся
 
Регистрация: 04.01.2012
Сообщений: 44
По умолчанию

не знаю, есть ли кто живой ), но приветствую, и прошу о помощи )))

не понимаю,что не так у меня

Код:

Private Sub CommandButton1_Click()
ActiveDocument.Content.InsertAfter Text:=ListBox1.Text
End Sub

Private Sub CommandButton2_Click()
    Unload Form2
End Sub

Private Sub UserForm_Initialize()
    ComboBox1.AddItem "RUS"
    ComboBox1.AddItem "ENG"
End Sub



Private Sub ComboBox1_Change()
        
If ComboBox1.Value <> "" Then
        Call ReadListLic
Else
    MsgBox "Выберите язык!", vbOKCancel, "Выборка номеров лицензий", "Demo.Hlp"
End If
End Sub

Private Sub ReadListLic()

    Dim cnn As New ADODB.connection
    Dim rst As New ADODB.Recordset
    Dim Lname As String
    Dim i As Integer
    
        If ComboBox1.Text <> "" Then
            Lname = ComboBox1.Text
    '        MsgBox Lname
        End If
     cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
              "Data Source=C:\Documents and Settings\_\Desktop\my.mdb"
     rst.Open "SELECT * FROM LIC_WORKERS WHERE  Lang = 'Lname'; ", _
              cnn, adOpenStatic
rst.MoveFirst
i = 0 With Me.ListBox1 .Clear Do .AddItem .List(i, 0) = rst![Name] .List(i, 1) = rst![Nr_Lic] .List(i, 2) = rst![Date_Lic] i = i + 1 rst.MoveNext Loop Until rst.EOF End With End Sub
когда задаю условие для запроса 'Lname' -тогда вылетает ошибка ,как на картинке (см.ниже)
но если я просто пишу условия , типа : 'RUS', или 'ENG', то все срабатывает
Изображения
Тип файла: jpg err.JPG (12.2 Кб, 42 просмотров)
@лeся вне форума Ответить с цитированием
Старый 07.03.2012, 14:13   #5
@лeся
Пользователь
 
Аватар для @лeся
 
Регистрация: 04.01.2012
Сообщений: 44
По умолчанию

а если ставлю Lang <> 'Lname' , то срабатывает...
@лeся вне форума Ответить с цитированием
Старый 14.03.2012, 14:22   #6
@лeся
Пользователь
 
Аватар для @лeся
 
Регистрация: 04.01.2012
Сообщений: 44
По умолчанию

ну коли я тут одна ))), а может кому то,когда то пригодится
то проблема была вот в чем :

Where Lang = '" & Lname & "'

с обоих сторон надо было добавить " &
@лeся вне форума Ответить с цитированием
Старый 14.03.2012, 16:24   #7
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

для наглядности(скобки и кавыяки лучше видны)
особенно в случае нескольких условий

запрос составляется с псевдо-вставками с указанием типа c-n-d
c --нужны навычки
n --не нужны
d --нужна дата #mm/dd/yyyy#


Код:
dim s1
s1="SELECT * FROM LIC_WORKERS
s1=s1 & " WHERE  Lang = '%1c'
s1=s1 & " and nekii_kod=%2n
s1=s1 & " and nekaja_data=#%3d#;"
s1=replace(s1,"%1c","lname")
s1=replace(s1,"%2n",5)
s1=replace(s1,%3d,"format(now,"mm\/dd\/yyyy")
rst.Open s1 , cnn, adOpenStatic
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 19.03.2012, 12:06   #8
@лeся
Пользователь
 
Аватар для @лeся
 
Регистрация: 04.01.2012
Сообщений: 44
По умолчанию

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
для наглядности(скобки и кавыяки лучше видны)
особенно в случае нескольких условий

запрос составляется с псевдо-вставками с указанием типа c-n-d
c --нужны навычки
n --не нужны
d --нужна дата #mm/dd/yyyy#


Код:
dim s1
s1="SELECT * FROM LIC_WORKERS
s1=s1 & " WHERE  Lang = '%1c'
s1=s1 & " and nekii_kod=%2n
s1=s1 & " and nekaja_data=#%3d#;"
s1=replace(s1,"%1c","lname")
s1=replace(s1,"%2n",5)
s1=replace(s1,%3d,"format(now,"mm\/dd\/yyyy")
rst.Open s1 , cnn, adOpenStatic
какую роль в данном случае играет % ?
@лeся вне форума Ответить с цитированием
Старый 19.03.2012, 12:27   #9
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

просто меточка, чтобы не заменить нужную единичку
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 29.03.2012, 11:43   #10
@лeся
Пользователь
 
Аватар для @лeся
 
Регистрация: 04.01.2012
Сообщений: 44
По умолчанию

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
просто меточка, чтобы не заменить нужную единичку
опять возник вопрос )) т.е. встала проблемка.
можно ли в одном connection делать два и более запроса для textboxa и combobox ?
дело в том что в combo нужно всех работников отдела , и из той же таблицы в textbox -начальника,для него я сделала поле CHEFF соответственно фильтр будет ".....WHERE Status <> NULL "

Код:
Private Sub ReadGIP_List()

    Dim cnn As New ADODB.connection ' оставила может для второго connection
    Dim rst As New ADODB.Recordset
    Dim sLang_part As String
    Dim sstr As String
    Dim objCon As New ADODB.connection
    Dim objRecSet As New ADODB.Recordset
    Dim dep As String
    Dim cheef_st As String

        sLang_part = Split(sstr, "-")(1)
        dep = Me.ComboBox_Department.Value
        
    ' заготовка запросов : 
    dep = "SELECT [Name] FROM   " & dep & "_WORKERS  Where Lang = '" & sLang_part & "'   ORDER by Name ;"
    cheef_st = "SELECT [Name], [Status] FROM   " & dep & "_WORKERS  Where Lang = '" & sLang_part & "'   and status <> NULL ;"  

    'обеспечение перемещения по набору в любом направлении
    objRecSet.CursorType = adOpenStatic
    
       
    'настройка и открытие объекта Connection
    objCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                              "Data Source=\\****.mdb ;" & _
                              "Persist Security Info=False"
    objCon.Open
      

    'открытие набора RecordSet на основании запроса
    objRecSet.Open dep, objCon
    objRecSet.Open cheef_st, objCon
      
    'проверка не пустой ли созданный набор RecordSet
    If objRecSet.EOF = True And objRecSet.BOF = True Then
        MsgBox "Таблица не содержит записей!"
        Set objCon = Nothing
        Set objRecSet = Nothing
        Exit Sub
    End If
    
    'переход в начало набора
    objRecSet.MoveFirst
    
    'заполнение списка сотрудников
    
    With Me.ComboBox_Name
        .Clear
    Do Until objRecSet.EOF
        .AddItem objRecSet![Name]
        objRecSet.MoveNext
    Loop
    End With
 
    Set objCon = Nothing
    Set objRecSet = Nothing

End Sub

Последний раз редактировалось @лeся; 29.03.2012 в 12:14. Причина: вопрос повторов решен
@лeся вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как "повесить " передачу данных из формы на событие нажатия кнопки типа "button" ? vedro-compota JavaScript, Ajax 10 14.12.2010 21:05
Как сделать кнопку "больше"-"меньше" Clericos HTML и CSS 8 30.09.2009 20:20
Автоматическое сохранение + Печать. Продолжение темы "Перенос данных из Excel в Word" The_Andrei Microsoft Office Word 15 23.06.2009 23:46
C++, препроцессор, как из "int" сделать "char"? Максай Помощь студентам 3 05.09.2008 08:16
сделать окно "открыть","сохранить как" blackstersl Общие вопросы Delphi 1 24.08.2008 10:31