Rambler's Top100
Форум: MS ACCESSБолталкаVBVBA MS OfficeMS SQL server
Новые сообщения: 01000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод данных из формы в эксель (+)
 
 автор: Евген   (06.03.2010 в 10:44)   личное сообщение
 
 

Здравствуйте!

Есть таблица на 150 полей, на основании которой создана форма. На форме располагается 150 флажков (каждый флажок "прикручен" к столбцу в таблице).

Задумка в том, чтобы пользователь при открытии формы самостоятельно (путем установки/снятия флажка и нажатия кнопки) мог выводить в эксель-файл нужные только ему столбцы.

Вроде бы, все работает. НО! При открытии получившегося эксел-файла оказывается, что, помимо выбранных столбцов, туда попадают:
-остальные столбцы (без данных и все ячейки закрашены серым цветом)
-повторно выводятся и нужные столбцы, вернее столбцы подписаны как флажки в базе (ячейки также закрашены серым цветом, им присвоено значение "-1").

Собственно, как это забороть, чтобы в эксель-файл попадали только выбранные столбцы?
Может создавать промежуточную таблицу и ее экспортироватьее в эксель, но это не знаю как реализовать...

  Ответить  
 
 автор: Lukas   (06.03.2010 в 12:13)   личное сообщение
 
 

Можно собрать новую строку SQL запроса с учетом выделенных флажков, и выталкивать в Excel не данные формы, а данные этого запроса.

  Ответить  
 
 автор: Евген   (06.03.2010 в 12:38)   личное сообщение
 
 

А можно маленький пример, если не трудно? Сам синтаксис запроса на выборку я могу написать, но я не знаю, как прикрутить сюда зависимость от установки/снятия флажка.

  Ответить  
 
 автор: час   (06.03.2010 в 14:27)   личное сообщение
 
 

может поможет
http://hiprog.com/index.php?option=com_content&task=view&id=251661628

  Ответить  
 
 автор: Lukas   (06.03.2010 в 14:32)   личное сообщение
28 Кб.
 
 

=>

  Ответить  
 
 автор: Евген   (06.03.2010 в 16:57)   личное сообщение
 
 

Лукас, Вы гений!

Я немного модифицировал Ваш код:

Private Sub btnExport_Click()
Dim i As Integer
Dim strSQL As String

strSQL = "SELECT "
For i = 0 To Me.Section(0).Controls.Count - 1
If Me.Controls("flg" & i).Value Then
strSQL = strSQL & Me.Section(0).Controls(i).ControlSource & ", "
End If
Next i
strSQL = Left$(strSQL, Len(strSQL) - 2) & " FROM Ваша таблица"
MsgBox strSQL
End Sub

А именно, изменил две последние строки на:

strSQL = Left$(strSQL, Len(strSQL) - 2) & " INTO Моя таблица" & " FROM Ваша таблица"
CurrentDb.QueryDefs("Мой запрос").SQL = strSQL

Таким образом я изменяю текст существующего в базе запроса на sql-строку, собранную Вашим кодом, потом с помощью запроса создаю таблицу с выбранными полями, а уже таблицу вывожу в эксель.

Огромное Вам спасибо!

  Ответить  
 
 автор: Lukas   (06.03.2010 в 17:06)   личное сообщение
 
 

А зачем промежуточная таблица?
Можно:
1. Открыть рекордсет на созданной строке SQL и выводить его данные в Excel.
2. Изменить SQL заготовленного ранее запроса и выводить запрос в Excel.

  Ответить  
 
 автор: Евген   (06.03.2010 в 17:10)   личное сообщение
 
 

Ну да, Вы правы, просто я на радостях поторопился :-)

  Ответить  
 
 автор: АлаяЗаря   (13.03.2010 в 14:17)   личное сообщение
 
 

Блин, а почему по нажатию "to Exel" ексель не открывается? или я вообще обленился?

  Ответить  
 
 автор: Lukas   (13.03.2010 в 14:31)   личное сообщение
 
 

А должен?

http://hiprog.com/index.php?option=com_content&task=view&id=429

  Ответить  
 
 автор: АлаяЗаря   (13.03.2010 в 14:38)   личное сообщение
 
 

спс =)

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList