Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> из mdb в Excel, заполнение ComboBox 
:(
    Опции темы
RustreX
Дата 22.5.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



Вообщем такая проблема: Мне нужно заполнить ComboBox находящийся на UserForm значениями находящиеся в базе данных *.mdb.
как не ковырялся - не получается... Помогите пожалуйста
 
Код

Private Sub ComboBox1_Change()
Dim dbAccess As Database
Dim reRecordSet As Recordset
Dim stSQL As String
On Error GoTo ErrorsDB
Set dbAccess = OpenDatabase(Name:=ThisWorkbook.Path & "\gamedb.mdb")
stSQL = "SELECT name, g_key FROM prodag, game WHERE g_key=key_g "
Set reRecordSet = dbAccess.OpenRecordset(stSQL)
If (reRecordSet.RecordCount > 0) Then
reRecordSet.MoveFirst
Do While Not reRecordSet.EOF
Name = reRecordSet!Name
Sheets(1).ComboBox1.AddItem Name
reRecordSet.MoveNext
Loop
Else
MsgBox "Not Found"
End If
reRecordSet.Close
dbAccess.Close
GoTo Ends
ErrorsDB:
MsgBox "Error"
Ends:
End Sub

структура базы данных

Это сообщение отредактировал(а) Akina - 23.5.2008, 00:02

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  1.JPG 33,74 Kb
PM MAIL   Вверх
bopoha
Дата 22.5.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Что именно не получается? Ошибка?
PM MAIL WWW ICQ Skype GTalk   Вверх
RustreX
Дата 22.5.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



Цитата(bopoha @ 22.5.2008,  19:40)
Что именно не получается? Ошибка?

не получается загнать список в combobox....
Ошибки никакой не вылетает...
Вообщем: Я пытаюсь заполнить ComboBox записями поля G_KEY (поле подстановки, которое берет свои значения из поля NAME таблицы GAME) из таблицы PRODAG.

Прикрепил файл с базой. Там вкладка Продажи - кнопка Редактирвоание - на ней самый первый Combobox1. ВОт его у меня и не получается заполнить =(

Это сообщение отредактировал(а) RustreX - 22.5.2008, 19:56

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  GAME.rar 138,73 Kb
PM MAIL   Вверх
Akina
Дата 23.5.2008, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Начните с того, что НАВСЕГДА избавьтесь от привычки давать полям, переменным, таблицам и прочим объектам имена, входящие в список резервированных слов. В данном конкретном случае имеется в виду Name.

А когда поправите - выполните код в пошаговом режиме и найдите момент, когда поведение кода и содержимое переменных отличаются от желаемого.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Alex1984
Дата 23.5.2008, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 6.3.2005
Где: Киев

Репутация: нет
Всего: 2



Код

  


   ExcelApp.ConnectKind := ckRunningOrNew;
   ExcelApp.Connect;
   ExcelApp.Visible[1049] := true;
   ExcelApp.Workbooks.Add (EmptyParam,1);
   ExcelWb.ConnectTo (ExcelApp.ActiveWorkbook );
   ExcelWS.ConnectTo (ExcelWb.Worksheets [1] as _WorkSheet);




procedure TForm1.bbOpenDBClick(Sender: TObject);
begin
if od.Execute then
begin
try
   ADO_CON.Connected:=false;
   ADO_CON.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+od.FileName+';Persist Security Info=False';
   ADO_CON.Connected:=true;
   edtBASA.Text:=od.FileName;
finally
end;
end;
end;

procedure TForm1.bbExcelClick(Sender: TObject);
var
 from_m,to_m:integer;
 year_from:integer;
 year_to:integer;
 s:string;
begin
If TRIM(edtBASA.Text)='' then
showmessage('Áàçó âûáåðè...')
ELSE
BEGIN
try
    l:=TstringList.Create;
    qryADO.Active:=false;
    from_m:=cmMon.ItemIndex+1;
    to_m:=cmMon.ItemIndex+2;
    year_from:=strtoint(edtYear.Text);
    year_to:=strtoint(edtYear.Text);
    if to_m=13 then
    begin
      to_m:=1;
      year_to:=year_to+1;
    end;
    qryAdo.Parameters.ParamByName('PFROM').Value:=EncodeDate(Year_from,from_m,1);
    qryAdo.Parameters.ParamByName('PTO').Value:=EncodeDate(Year_TO,TO_m,1);
//    showmessage(qryADO.SQL.Text);
    try
      qryADO.Active:=true;
      qryADO.First;
      while not qryADO.Eof do
      begin
      s:='';
      s:=formatdatetime('dd.mm.yyyy',qryADO.fieldbyname('DEVENT_DATE').AsDateTime)+';';
      s:=s+formatdatetime('hh:nn',qryADO.fieldbyname('DEVENT_TIME').AsDateTime)+';';
      s:=s+qryADO.fieldbyname('TCARD').AsString+';';
      s:=s+qryADO.fields[3].AsString+';';
      s:=s+qryADO.fieldbyname('TDEPARTMENTNAME').AsString+';';
      s:=s+qryADO.fieldbyname('tDescReader').AsString;
      l.Add(s);
         qryADO.Next;
      end;
      l.SaveToFile('1.csv');
    TO_EXCEL(l);
    except
       showmessage('×åòî íå òî ñ SQLåì...')
    end;
    qryADO.Active:=false;
    ADO_con.Connected:=false;
    ADO_con.Connected:=true;
finally
    l.Clear;
    l.Free;
    l:=nil;
 end;
END;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ADO_CON.Connected:=false;
end;

Еще почитай статейку http://forum.vingrad.ru/forum/topic-84634/...ry650732/0.html
у меня после этого вопросы просто отпали.
Как данные вытягивать, так это просто: Делаешь SQL запрос на выборку данных.
Если не знаешь, то открываешь Access, далаешь запрос, а потом просто переходишь к виду SQL. Вот тебе и выборка SQLем, кинул тебе рабочий код. Дописываю форму в экселе при выведении сейчас

Добавлено через 1 минуту и 18 секунд
Забыл написать
Microsoft.Jet.OLEDB.4.0
это виндовый обработчик базы данных, поищи его описание, а оттуда найдешь как данные тянуть)))))
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0754 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.