Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VBA for Access

Модерирует : ShIvADeSt

ShIvADeSt (14-09-2011 00:58): Все обсуждение тут http://forum.ru-board.com/topic.cgi?forum=33&topic=0357&start=1180  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

A_S_T_E_R_I_X

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deleted

Всего записей: 2384 | Зарегистр. 17-04-2003 | Отправлено: 21:18 05-12-2008 | Исправлено: A_S_T_E_R_I_X, 12:05 06-12-2008
Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delete

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 20:43 06-12-2008 | Исправлено: Elena3785, 21:45 11-12-2008
liverpool56



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Подскажите пожалуйста каким образом можно из Excel таблицы конвертировать в Access базу также в таблицу в точности такую же?  
 
 
 
Добавлено:
Имелось ввиду не руками, а скриптом.

Всего записей: 111 | Зарегистр. 18-05-2007 | Отправлено: 15:06 10-12-2008
Mont1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
liverpool56
Попробуй команду в Access-e
 
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, "TableName", "C:\File.xls"

Всего записей: 49 | Зарегистр. 15-10-2008 | Отправлено: 10:18 11-12-2008
liverpool56



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
to Mont1
Спасибо, но именно нужно чтобы все было прозрачно для пользователя, чтобы просто запустить скрипт и все добавилось, просто нужно это сделать у многих клиентов.

Всего записей: 111 | Зарегистр. 18-05-2007 | Отправлено: 08:55 12-12-2008 | Исправлено: liverpool56, 08:56 12-12-2008
ArtemijG

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем Здрасте! С наступающим. У меня возникла проблема. Излагаю: Существуют таблицы EXCEL (стандартная с одинаковым количеством строк, но каждый раз с разным количеством рядков). Мне надо:  
1) Импортировать ее в ACCESS. Это я делаю следующим макросом.
Option Compare Database
 
Public PathN As String
Public XlApp As Object
Public Wbk As Object
 
Public BD As DAO.Database
Public rs As DAO.Recordset
 
 
Public SQL As String
Public Function OpenDB() As Boolean
On Error GoTo m01
    Set BD = CurrentDb
    OpenDB = True
    Exit Function
m01:
    OpenDB = False
    End
End Function
Sub Downloader()
PathN = CurrentProject.Path
 
If OpenDB = False Then Exit Sub
 
Dim FName As String
Dim NumFile As Integer
NumFile = 0
FName = Dir("*.xls")
Do While FName <> ""
 
      If FileOpen(FName) Then
            NumFile = NumFile + 1
            Debug.Print FName, NumFile
 
   End If
FName = Dir
Loop
BD.Close
End Sub
Function FileOpen(FName As String) As Boolean
On Error Resume Next
Dim ErrTxt As String
Dim Index As Long, endcells As Long
Dim StartCells As Integer, ListStart As Integer
 
Index = 0
ErrTxt = ""
 
Set rs = BD.OpenRecordset("input")
Set XlApp = CreateObject("Excel.Application")
Set Wbk = XlApp.Workbooks.Open((FName), False, ReadOnly)
 
     
    i1 = 2
    i = i1
     
    ListStart = 1
    lastrw = Selection.SpecialCells(xlCellTypeLastCell).Row
    j = i1
               
            While Wbk.Sheets(1).Cells(j, 2) <> 0
             
                If Wbk.Sheets(1).Cells(j, 1) <> "" Then
                 
 
                    rs.AddNew
 
                    rs!Код = Wbk.Sheets(1).Cells(j, 1)
                    rs!МФО = Wbk.Sheets(1).Cells(j, 2)
                    rs!ОР = Wbk.Sheets(1).Cells(j, 3)
                    rs!Назначение_счёта = Wbk.Sheets(1).Cells(j, 4)
                    rs!Результат = Wbk.Sheets(1).Cells(j, 5)
                    rs!January = Wbk.Sheets(1).Cells(j, 6)
                    rs!Expense = Wbk.Sheets(1).Cells(j, 7)
                     
                    rs.Update
                     
                    j = j + 1
                     
                End If
            Wend
Wbk.Close SaveChanges:=False
XlApp.Quit
FileOpen = True
 
End Function
 
Таблицы ACCESS и EXCEL одинаковы по всем параметрам, только в ACCESS больше столбиков(месяца года)
 
А теперь что оно делает. Я помещаю в папку "мои документы" 25 файлов EXCEL. Данный макрос перебирает их поочерёдно и наполняет таблицу ACCESS данными. Как бы элементарно.  
 
Но возникала у меня вторая необходимость. После того как данные импортированы, у меня появляется вторая группа файлов EXCEL(за другой месяц) которую снова надо экспортировать в ACCESS, но в этот раз данные должны поместится в другой столбец (February)ACCESS. Сравнение происходит по двум полям, тоесть если совпал поле МФО и ОР данные заносятся в Февраль, если не совпали тогда записываются после последнего заполненного рядка. Данный макрос у меня реализован в EXCEL. Всё очень просто потому как у меня идёт сравнение значений ячеек между двумя листами.Привожу пример кода в EXCEL.  
 
Sub &#212;&#224;&#234;&#242;_1602_2007()
Dim MyStr, a, Response
Dim i, i1, i2, i3, ikmF, iMs, j As Integer
ikmF = 12 + (Cells(4, 4) - 1) * 8 + Cells(5, 4) * 2   ' &#199;&#236;_&#249;&#229;&#237;&#237;&#255; &#228;&#238; &#234;&#238;&#235;&#238;&#237;&#234;&#232; &#239;&#238;&#242;&#238;&#247;&#237;&#238;&#227;&#238; &#236;_&#241;&#255;&#246;&#255;
iMs = (Cells(4, 4) - 1) * 3 + Cells(5, 4)             ' &#237;&#238;&#236;&#229;&#240; &#239;&#238;&#242;&#238;&#247;&#237;&#238;&#227;&#238; &#236;_&#241;&#255;&#246;&#255;
Response = MsgBox("&#199;&#224;&#226;&#224;&#237;&#242;&#224;&#230;&#229;&#237;&#237;&#255; &#244;&#224;&#234;&#242;&#232;&#247;&#237;&#232;&#245; &#228;&#224;&#237;&#232;&#245; &#231;&#224; " & Str(iMs) & " &#236;_&#241;&#255;&#246;&#252;..." & Chr(13) & Chr(10) _
           & "&#193;&#196; &#226;_&#228;&#241;&#238;&#240;&#242;&#238;&#226;&#224;&#237;&#224; &#239;&#238; &#204;&#212;&#206; + &#206;&#208; ?!!!", vbYesNo)
If Response = vbNo Then GoTo m_end   ' User chose No.
 
i1 = 10
i2 = Cells(8, 3)                    ' &#202;_&#237;&#229;&#246;&#252; &#193;&#196;
i = i1
j = 6
While Worksheets("Input").Cells(j, 2) <> 0
      Cells(1, 4) = j
M1:   For i = i1 To i2
          If Cells(i, 1) = Worksheets("Input").Cells(j, 2) Then             ' MFO=
             If Cells(i, 2) = Worksheets("Input").Cells(j, 3) Then          ' OR=
                Cells(8, 4) = i
                Cells(i, ikmF) = Worksheets("Input").Cells(j, 10)    '&#244;&#224;&#234;&#242; &#237;&#224; &#231;&#226;_&#242;&#237;&#243; &#228;&#224;&#242;&#243;
                i1 = i + 1
                GoTo M4                                                     ' Next input
             Else
                If Cells(i, 2) > Worksheets("Input").Cells(j, 3) Then GoTo M3 ' Insert
                GoTo M5                                                     ' Next DB
             End If
          End If
          If Cells(i, 1) > Worksheets("Input").Cells(j, 2) Then GoTo M3
          'GoTo m5                                                           ' Next DB
M5:   Next i
' &#194;&#241;&#242;&#224;&#226;&#234;&#224; &#241;&#242;&#240;_&#247;&#234;&#232; -  Cells(8, 3)
M3:   i3 = Cells(8, 3) + 1
      Cells(8, 4) = i3
      Cells(i3, 1) = Worksheets("Input").Cells(j, 2)
      Cells(i3, 2) = Mid(Worksheets("Input").Cells(j, 3), 1, 14)
      Cells(i3, 3) = Mid(Worksheets("Input").Cells(j, 3), 9, 2)
      Cells(i3, 4) = Worksheets("Input").Cells(j, 1)
      Cells(i3, 5) = Worksheets("Input").Cells(j, 4)
      Cells(i3, ikmF) = Worksheets("Input").Cells(j, 10)    '&#244;&#224;&#234;&#242;
      Cells(8, 3) = i3
M4:   j = j + 1
Wend
m_end:
End Sub
 
 
Но в ACCESS понятие ячейки отсутствует. Что делать? Помогите. Всех с наступающим!

Всего записей: 307 | Зарегистр. 17-06-2008 | Отправлено: 11:20 26-12-2008
KenGa



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, пропало главное меню в Access 2003. При этом в настройках "показывать стандатрное меню" галочка стоит, но она нажата и залочена.. никак не изменить, и меню не показывает
Под чужим профилем всё ОК... но удалять свой профиль в виндах не хотелось бы... подскажите, плиз, как вернуть стандартное меню..

Всего записей: 26 | Зарегистр. 30-10-2002 | Отправлено: 16:01 26-12-2008 | Исправлено: KenGa, 16:02 26-12-2008
ArtemijG

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Никто не ответит? Если необходимо более детально описать суть проблемы, я с радостью это сделаю.

Всего записей: 307 | Зарегистр. 17-06-2008 | Отправлено: 15:37 09-01-2009 | Исправлено: ArtemijG, 15:41 09-01-2009
dmka



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ArtemijG
Много буков и нифига не ясно в чем собственно вопрос...
 
Насколько понял, у тебя неправильно спроектирована база Access. В каждой записи зачем-то куча колонок на каждый месяц ((February)ACCESS, ...), вместо того, чтобы добавить одну - date (ну или две - month, year).

Всего записей: 950 | Зарегистр. 23-04-2003 | Отправлено: 17:17 09-01-2009
ArtemijG

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А каким то образом можно скриншоты прицепить для наглядности?

Всего записей: 307 | Зарегистр. 17-06-2008 | Отправлено: 17:32 09-01-2009
Alex_Dark_69



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KenGa пробовал делать "сброс"?

Всего записей: 7 | Зарегистр. 09-01-2009 | Отправлено: 17:33 09-01-2009
Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожайлуста, как снять выделение строки в списке?
А то у меня в форме несколько списков, и они выделяются все. А нужно, чтобы при выполнении процедуры автоматически снималось выделение строки.

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 21:26 24-01-2009
svmechtaru



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть две базы Acees в разных городах. Каждый день вечером скриптом упаковываем в rar одну из них и отправляем на FTP в другой город, там скриптом распаковываем и синхронизируемся, затем тоже самое обратно. База 200мб, в упакованном виде 15мб. Передается порядка 20 минут. Нужно повысить скорость передачи, или вообще самого процесса.  
 
Вопрос: если программно создать дубликат базы и удалить в нем все записи, не изменявщиеся с энного периода времени, а затем ее упаковать. Размер такой базы будет порядка в 100 раз меньше. Но при синхронизации с такми дубликатом в другом городе Access сделает нужные изменения, но удалит все старые записи, чего не нужно было бы делать, а хотелось бы получить синхронизацию без удаления стандартными процедурами, не прибегая к написанию собственных. К тому же, основываясь на опыте, программа синхронизации, написанная на Access вречную работает ооочень медленно, что в конечном итоге не ускорит процесс обмена.  
 
Посоветуйте как все упростить/ускорить?  
 
PS Решение по увеличению скорости интернета не предлагать.

Всего записей: 3 | Зарегистр. 29-01-2009 | Отправлено: 15:35 29-01-2009
KenGa



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Решение нашел: схранил и затем восстановил настройки офиса через "Восстановление приложений MS"

Всего записей: 26 | Зарегистр. 30-10-2002 | Отправлено: 22:50 29-01-2009
Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто поможет? Очень нужно перекидывать данные из одной базы в другую. Я не знаю как это сделать. Хотя бы небольшой пример, например, есть База1, в которой Таблица1 (поле1, поле2) и есть База2, в которой Таблица2 (поле1, поле2)
 
Private Sub Кнопка1_Click()
 
А вот здесь код, который бы позволял из Базы1 Таблицы1 пререкидывать данные в Базу 2 Таблица2
 
End Sub
 
Помогите!

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 20:25 30-01-2009
EZH



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Elena3785
Ты же SQL запросы умеешь выполнять на VB? Выполняешь для Базы 2:
 
INSERT INTO Таблица2(поле1, поле2)
SELECT поле1, поле2
FROM [Диск:\Путь\База1.mdb].Таблица1;

Всего записей: 1738 | Зарегистр. 02-09-2004 | Отправлено: 22:42 30-01-2009 | Исправлено: EZH, 22:44 30-01-2009
Len4ik1987



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mont1

Цитата:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, "TableName", "C:\File.xls"

 
 Класс! ))  
А у меня файлов больше, путь к ним C:\Len4ik , а имена файлов указаны в поле "3" таблицы "table2", причем нужно импортировать каждый файл Excel в отдельную таблицу и назвать таблицу также, как называется имя файла Excel.  
 
 Подскажите плз, как такое сделать! ))  
 

Всего записей: 3 | Зарегистр. 31-01-2009 | Отправлено: 14:19 31-01-2009
Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EZH
Спасибо за подсказку. Запросы умею делать, мне главное понять принцип. Теперь буду экспериментировать.

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 19:38 03-02-2009
Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто может мне подсказать или прислать небольшой пример, как создать свою панель, например,  с двумя кнопками, при нажатии на которые открывалась бы Форма1 и Форма2.  И как создать свою командную строку, где-бы находилось две команды, например, Функция1 и Функция2. При выборе функции1 открывалось меню, где находилась бы команда Форма1.

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 14:55 12-02-2009
Yarapolk

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!  
Создал базу в акцесе для ведения кассы организации, поля: "кому\от кого", "подотчетное лицо", "дата", "сумма прихода", "сумма расхода", "статья расхода", "примечание". Сделал SQL запрос: "Итого приход", "Итого расход", "Остаток".  
После чего все это переместил в форму, все работает, только один минус: при переходе по строкам в таблице итоговые суммы запроса не меняються, а можно сделать так чтобы итоговые суммы высчитывались до активной строки, если можно то подскажите пожалуйста как.

Всего записей: 14 | Зарегистр. 07-11-2008 | Отправлено: 10:17 13-02-2009
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VBA for Access
ShIvADeSt (14-09-2011 00:58): Все обсуждение тут http://forum.ru-board.com/topic.cgi?forum=33&topic=0357&start=1180


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru