Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ошибка при обращении к файлу БД / 18 сообщений из 18, страница 1 из 1
16.04.2012, 10:08
    #37755085
Галямов Ильдар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
Уважаемые знатоки, прошу подсказать - что я сделал неправильно.
Никогда ранее не работал в VBA с операторами для управления файлом БД. Это мой первый код, скомпилированный на знаниях из этого форума :)
Вот код:
Код: vbnet
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
Private Sub BazaDan()
Dim cn As ADODB.Connection
Dim cmd As ADODB.Command
Dim DBFullName As String


'// блок оптимизация работы excel
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
    Application.DisplayStatusBar = False
    Application.DisplayAlerts = False
'\\


'// открываем книгу, если книга не та, то возобновляется процедура открытия книги
Dim proverka As Boolean
proverka = True
zanovo: 'возвращаемся сюда, если выбрали не тот файл
proverka = True
Dim OpenBook As Workbook

FileToOpen = Application.GetOpenFilename(Title:="Открыть файл", FileFilter:="Excel Files *.xls* (*.xls*),") 'диалог открытия книги
If FileToOpen = False Then
    MsgBox "Файл не выбран", vbExclamation, "Информация"
    Exit Sub
    Else
        Workbooks.Open Filename:=FileToOpen
        Set OpenBook = ActiveWorkbook
        OpenBook.Activate
End If
'\\


'// заносим необходимые данные из открытой книги в массив
Application.DisplayAlerts = False ' отключаем лишние запросы типа сохранить или нет :)
Dim sh As Worksheet
Dim rng As Range
Dim y As Integer
Dim names(1 To 300) As String
Dim stepen(1 To 300) As Integer
Dim material(1 To 300) As Currency
Dim tzr(1 To 300) As Currency
Dim zp(1 To 300) As Currency
Dim dopzp(1 To 300) As Currency
Dim strah(1 To 300) As Currency
Dim ceh(1 To 300) As Currency
Dim ceh_s(1 To 300) As Currency
Dim zavod(1 To 300) As Currency
Dim zavod_s(1 To 300) As Currency
Dim prib(1 To 300) As Currency
Dim itog(1 To 300) As Currency
y = 0
For Each asd In OpenBook.Worksheets 'вводим цикл для каждого листа в открытой книге
    If y = 0 Then GoTo propusk
    Set sh = OpenBook.Worksheets(y + 1)
    names(y) = sh.Range("a2")
    stepen(y) = CInt(Val(Right((sh.Range("c3")), 1)))
    material(y) = sh.Range("f5")
    tzr(y) = sh.Range("f6")
    zp(y) = sh.Range("f7")
    dopzp(y) = sh.Range("f8")
    strah(y) = sh.Range("f9")
    ceh(y) = sh.Range("f10")
    ceh_s(y) = sh.Range("f11")
    zavod(y) = sh.Range("f12")
    zavod_s(y) = sh.Range("f13")
    prib(y) = sh.Range("f14")
    itog(y) = sh.Range("f15")
propusk:
    y = y + 1
Next
'\\


'// работа с базой данных
DBFullName = "C:\входящие\управляющие файлы\DOS_PEO.accdb"
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFullName & ""
cn.Open
Dim x As Integer
For x = 1 To y - 1
    Set cmd = New ADODB.Command
    With cmd
        .ActiveConnection = cn
        .CommandText = "INSERT INTO DATA (names, stepen, material, tzr, zp, dopzp, strah, ceh,ceh_s,zavod,zavod_s,prib,itog) VALUES (" & names(x) & "," & stepen(x) & "," & material(x) & "," & tzr(x) & "," & zp(x) & "," & dopzp(x) & "," & strah(x) & "," & ceh(x) & "," & _
        ceh_s(x) & "," & zavod(x) & "," & zavod_s(x) & "," & prib(x) & "," & itog(x) & ");"
End With
    cmd.Execute
Next x
cn.Close
Set cn = Nothing
'\\ окончание работы с базой данных


End Sub



И вот такая ошибка вылетает на строке cn.open:
...
Рейтинг: 0 / 0
16.04.2012, 10:24
    #37755106
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
скорее всего из-за пробелов в пути
возьмите путь в кавычки или измените путь
...
Рейтинг: 0 / 0
16.04.2012, 10:29
    #37755116
Галямов Ильдар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
HandKot, по вашему совету все сделал, нет - не из-за пробелов в пути (
...
Рейтинг: 0 / 0
16.04.2012, 10:29
    #37755117
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
Галямов Ильдар,

вполне возможно что DOS_PEO.accdb --это аксесс 2010
а вы работаете в а2007 или а2003
...
Рейтинг: 0 / 0
16.04.2012, 10:30
    #37755118
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
...
Рейтинг: 0 / 0
16.04.2012, 10:54
    #37755147
Галямов Ильдар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
Shocker.Pro, понял )) сделал. Спасибо! Теперь на cmd.execute ошибка выскакивает (( Где бы прочитать про стандартные операции из VBA Excel в БД access 2010: запись, чтение, изменение, удаление?
...
Рейтинг: 0 / 0
16.04.2012, 10:55
    #37755150
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
В любой книжке по основам SQL
...
Рейтинг: 0 / 0
16.04.2012, 10:56
    #37755151
ElenHim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
Ильдар, а вам точно аксес нужен?
Специально уточняю, т.к. вы вроде только начинаете. Лучше бы сразу SQL SERVER.
...
Рейтинг: 0 / 0
16.04.2012, 11:00
    #37755155
Галямов Ильдар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
ElenHim, если честно, я бы и просто в Excel записал, мне 1 млн строк за глаза на десятилетия ))) Думал, что с базой данных СУБД Access будет проще, так как в в ней популярно можно самому создать таблицы и формы, да и интуитивнее более понятно как представлены данные в access
...
Рейтинг: 0 / 0
16.04.2012, 11:20
    #37755186
ElenHim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
Формы можно в том же Excel сделать. А таблицы в SQL Server создавать не сложнее чем в Access (реляционная БД она и в африке реляционная БД)
Ну и нескромный вопрос, у вас аксес - лицензия?
...
Рейтинг: 0 / 0
16.04.2012, 11:28
    #37755194
Галямов Ильдар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
ElenHim, а в природе в принципе существуют базы данных на базе excel?
...
Рейтинг: 0 / 0
16.04.2012, 11:37
    #37755209
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
Галямов Ильдар,

Следует различать "Базу данных" - то есть хранилище как таковое, и "Клиента БД" - программа, которая предоставляет интерфейс пользователя к этой БД.

В принципе, на экселе можно делать и то и другое, но зачем? Через год будешь иметь дикий гемор все равно, чтобы перейти на специально предназначенные для этого средства - потеряешь в итоге больше времени.
...
Рейтинг: 0 / 0
16.04.2012, 11:43
    #37755217
Галямов Ильдар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
Shocker.Pro, походу надо иметь хотя средне-спец.образование программиста, чтобы что-то реальное усовершенствовать (кроме небольших автоматизаций ежедневной рутины). Для себя в настоящее время считаю неподъемным изучение SQL баз данных. Три ребенка младше 5 лет и молодая жена не оставляют времени на самостоятельное изучение ))) Придется дальше делать свою работу экономиста. Хотя те маленькие программульки на VBA под EXCEL уйму времени мне сэкономили
...
Рейтинг: 0 / 0
16.04.2012, 11:44
    #37755218
ElenHim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
Ну, за всю природу не скажу, но вот что следует усвоить: Excel - это табличный процессор. Он хорош для всего, кроме одного - хранения данных. Хранить данные следует в БД, и Access - не лучший выбор.
...
Рейтинг: 0 / 0
16.04.2012, 11:48
    #37755224
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
ElenHimХранить данные следует в БД, и Access - не лучший выбор.Ну не знаю, по-моему в Access данные хранить очень удобно. Лично я так и делаю, а в Excel извлекаю их сводными таблицами.
А маленькие БД можно хранить и в самом Excel
...
Рейтинг: 0 / 0
16.04.2012, 11:54
    #37755231
ElenHim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
Образование тут ни при чём.Вот время да, придётся выкроить.
Для начала почитайте книжицу

Конрад Карлберг Управление данными с помощью Microsoft Excel

Когда-то я сам с неё начинал.
Главное - понять общую концепцию. SQL сам по себе не сложнее VBA(имхо), но когда используется совместно - это как закись азота))
...
Рейтинг: 0 / 0
16.04.2012, 12:10
    #37755258
Галямов Ильдар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
ElenHim,

у меня есть идея воплотить соц.проект, суть его такая: 1) открываю школу для инвалидов-колясочников, 2) в эту школу приглашаю всех лиц заинтересованных в программировании, 3) поиск волонтеров, согласных приехать с большого города и почитать лекции и семинары по программированию из разных тематик, 4) организовать поиск заказов для выполнения этой группой обученных программистов (создание сайтов, макросы, небольшие программки, удаленная настройка и сопровождение 1С). Вот тут и я обучусь-таки работе ))). Ну это так пока мысли, которые уже на бумаге. Спасибо за советы Вам
...
Рейтинг: 0 / 0
16.04.2012, 12:30
    #37755293
ElenHim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к файлу БД
Serge 007,

Access не потому не лучший выбор, что в нём что-то удобно/неудобно.
Я приведу только пару аргументов:
- Цена. SQL Server Express доступен бесплатно
А вот Access - поставляется в про редакции офиса. Это - 2400(для дома и учёбы) VS 15000 (эт 2010, не встречал чтоб отдельно, но если есть, то тож за$)
- Даже с учётом всех ограничений, SQL Server Express наголову (а то и на две) превзойдёт Access.

И да, ничто не мешает извлекать данные из SQL Server(и других БД тоже) теми же сводными таблицами(сам я правда от этого в последнее время ухожу, предпочитаю ADO, ADO.NET, xml)

Галямов Ильдар,

касательно соцпроекта - похвально
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Ошибка при обращении к файлу БД / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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