| |
 19 Кб. |
|
| |
to: Lukas
(01.12.2008 в 10:56)
|
| | Вот пример удаления-создания связей. Может уже апаздал, но мало ли | |
| |
| |
| |
|
|
| |
to: час
(01.12.2008 в 10:50)
|
| | Тоска уйдет, сомнений нет.
Вот только будет ли ответ?
В глазах песок, в мозгу туман,
Тут нужен видимо стакан.  | |
| |
| |
| |
|
|
| |
to: Lukas
(01.12.2008 в 10:45)
|
| | Давай развею Вам тоску
Забъю задачею "башку" 
Коль думой занята башка
Уйдёт сама собой тоска  | |
| |
| |
| |
|
|
| |
to: час
(01.12.2008 в 10:43)
|
| | Как показывает моя небольшая практика, исчезают обычно модули (особенно форм), в которых ошибки в коде (причем зачастую банальные типа If без End IF). Стал писать чуть внимательнее, глюков стало значительно меньше. | |
| |
| |
| |
|
|
| |
to: час
(01.12.2008 в 10:40)
|
| | А делать нечего пока.
В душе унылая тоска.  | |
| |
| |
| |
|
|
| |
to: Lukas
(01.12.2008 в 10:38)
|
| | Кстати об исчезновениях ...
Тока что пытался проверить базу доктором Access
База исчезла без следа - хорошо в раре сжата копия.
А на той неделе труд целого дня - просто исчез - модуль в базе был, закрыл открыл и модуль сплыл.
"Чудеса глюкозные" | |
| |
| |
| |
|
|
| |
to: Lukas
(01.12.2008 в 10:27)
|
| | Вот и я удивлён....
Зима располагает к спячке
А Вы с утра в инетной скачке.....  | |
| |
| |
| |
|
|
| |
to: час
(01.12.2008 в 10:32)
|
| | На форуме SQL.ru, периодически народ жалуется на исчезновение файла при программном (и автоматическом, когда установлена опция сжимать при закрытии) сжатии.
Выполнять команду вручную на сжатие (после создания резервной копии) из интерфейса Access-а надежнее. Вот. | |
| |
| |
| |
|
|
| |
to: Lukas
(01.12.2008 в 10:30)
|
| | При программном сжатии может получиться конфуз. Я всегда лапками сжимаю
Вы что-то имеете ввиду !!! | |
| |
| |
| |
|
|
| |
to: час
(01.12.2008 в 10:25)
|
| | Сжимать не обязательно, наверное. Хотя если пересылать по почте, можно сжать и засунуть в архив.
При программном сжатии может получиться конфуз. Я всегда лапками сжимаю. | |
| |
| |
| |
|
|
| |
to: час
(01.12.2008 в 10:23)
|
| | Что - то не спалось сегодня, обычно раньше 12 меня из пушки не разбудить. | |
| |
| |
| |
|
|
| |
to: час
(01.12.2008 в 10:23)
|
| | И так чего получается
1. Создать программно базу.
2.Создаь программно таблицы 1 и 2
3. Перебросить данные в аблицы 1 и 2
4. Сжать базу.
А ведь у мня щас первые два-три пункта решаются копированием базы.
одной строкой кода
Filecopy a,b | |
| |
| |
| |
|
|
| |
to: Lukas
(01.12.2008 в 09:56)
|
| | Ты уже не спишь???????
Ты как железный - ночью ещё не спишь, а утром уже не спишь.
Сходил , я , глянул...... | |
| |
| |
| |
|
|
| |
to: час
(01.12.2008 в 09:50)
|
| | http://am.rusimport.ru/MSAccess/topic.aspx?ID=462
А полей как видно отсюда два:
SELECT ItemName, ItemValue
...структура может поменяться (количество и нааименование полей)...
А это можно предварительно считывать из оригинала. | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 21:46)
|
| | Хорошо, что пашет, кто бы усомнился, чтоб у тебя не похало, - тому в оахало!!!
.....
Это вы одно поле перебрасываете.?
А создать пустую базу - программно это как?
А таблицы там создать - это как ?-
структура может поменяться (количество и нааименование полей) | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 19:41)
|
| | Попробовал, пашет:
INSERT INTO tblItem IN 'C:\Documents and Settings\Lukas\Рабочий стол\БазаНовая.mdb'
SELECT ItemName, ItemValue
FROM tblItem IN 'C:\Documents and Settings\Lukas\Рабочий стол\БазаДанных.mdb'
WHERE IDItem Between 5 AND 8;
|
Запускаю запрос на выполнение в третьей базе. | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 19:26)
|
| | А что если сделать два запроса:
INSERT (в новый файл) ... SELECT FROM (из файла базы данных) WHERE (наши условия)? | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 17:41)
|
| | Нет,
я их линкую по мере необходимости.
А эта "база" для обслуживания основной.
"техническая такая" | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 17:29)
|
| | Нужные таблицы из третьей базы прилинкованы к текущей? | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 17:16)
|
| | Ну так создаем новый файл, экспортируем в него таблицы (без данных) из текущей бд
Данные лежат в третьей базе.
Потому её сразу и копируем (создавая новый файл сразу с таблицами нужных структур)
рвём связи
В таблицах удалям ненужное
И сжимаем программно | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 17:10)
|
| | Ну так создаем новый файл, экспортируем в него таблицы (без данных) из текущей бд, экспортируем данные. | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 16:39)
|
| | Ты всё понял правильно!!!! 
СТруктура везде одинаковая | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 16:22)
|
| | Две таблицы нужны, насколько я понял в файле обмена?
А структура таблиц как в текущей базе или в другой? | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 16:20)
|
| | Можно и с нуля, но видимо это редьки не слаще.......  | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 16:07)
|
| | Так может файл обмена создавать с нуля, а не копировать? | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 16:06)
|
| | Ваще-то
Вот чё я творю
Private Sub Кнопка4_Click()
Dim Of As String
Dim OTPRAVKA As String
Of = Nz(DFirst("OFISA", "PUTI"))
If Of = "" Then
Call MsgBox("Не установлен префикс офиса" _
& vbCrLf & "Выгрузку производить нельзя!!!!!!!!!!!!!" _
, vbCritical, "Предупреждение ")
Exit Sub
End If
If Of = "ZAVOD" Then
Call MsgBox("Установлен префикс центрального офиса" _
& vbCrLf & "Выгрузку производить нельзя!!!!!!!!!!!!!" _
, vbCritical, "Предупреждение ")
Exit Sub
End If
If MsgBox("Выгружаем данные за " & Me!Поле97 & " ГОД ?", vbYesNo) = vbNo Then MsgBox "ВЫБЕРИТЕ НУЖНЫЙ ГОД ": Exit Sub
PutTablic = Nz(DFirst("PutTablic", "PUTI"))
If CheckDir(PutTablic & "\BAZA" & Me![Поле97] & ".mdb") = False Then
Call MsgBox("Не обнаружен путь к основной таблице -> kas" & Me!Поле97, vbCritical, "Предупреждение.")
Call MsgBox("Укажите папку расположения таблиц.", vbQuestion, "Сообщение.")
PutTablic = FileUtils_GetFolderName
If Nz(PutTablic) = "" Then
DoCmd.Close acForm, Me.Name
Quit
End If
Exit Sub
End If
If Zanato(PutTablic & "\BAZA" & Me!Поле97 & ".mdb") = True Then Exit Sub
PutObmena = Nz(DFirst("PutObmena", "PUTI"))
Obmen = PutObmena & "\Obmen" & Me!Поле97 & ".mdb"
OTPRAVKA = PutObmena & "\OTPRAVKA" & Me!Поле97 & ".mdb"
If CheckDir(Obmen) = True Then
Kill Obmen
End If
FileCopy PutTablic & "\BAZA" & Me!Поле97 & ".mdb", Obmen
Call DeleteAllRelations(Obmen)
Call LinkTabNewName(Obmen, "kas" & Me!Поле97, "kas_osnovna")
Call LinkTabNewName(Obmen, "dog" & Me!Поле97, "dog_osnovna")
If Nalichie_Tablici("kas_osnovna") = True Then
' Удалить записи из таблицы kas с Ofis создания не равной местному
DoCmd.OpenQuery "Udalenie_V_Obmene_KAS"
' Удалить записи из таблицы kas с датой создания не равной периоду
DoCmd.OpenQuery "Udalenie_V_Obmene_DOG"
End If
Call DeleteTableName("kas_osnovna")
Call DeleteTableName("dog_osnovna")
If CheckDir(OTPRAVKA) = True Then
Kill OTPRAVKA
End If
DBEngine.CompactDatabase Obmen, OTPRAVKA
If CheckDir(OTPRAVKA) = True Then
MsgBox "СОЗДАН файл обмена с основным офисом " & OTPRAVKA
End If
End Sub
|
| |
| |
| |
|
|
| |
|
|
| |
to: час
(30.11.2008 в 15:59)
|
| | А у меня не видно.  | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 15:56)
|
| | Кратковременно появляется пустое серое
окно Access .
Надо как-то видимо VISIBLe | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 15:56)
|
| | "НАКЛАДОЧКА"
Какая? | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 15:52)
|
| | Кудыж правильнее?
Связи рвуться...........
Есть правда
"НАКЛАДОЧКА" | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 15:49)
|
| | Да не на чем.
Может завтра кто более правильное решение подкинет.  | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 15:46)
|
| | ДА, Lukas - твой код рабочий!!!!
А у меня какая - то ХР , а не код............... 
Хорошо, что хоть у тебя всё рабочее получается, а то ба мне кирдык.
Спасибо тебе!!!!  | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 15:43)
|
| | Возьмите мой кусок, он рабочий. | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 15:39)
|
| | А может вообще надо средствами библиотек ADOX, DAO ? | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 15:33)
|
| | А у мня ругается .....
скотина......
Dim appAccess As Access.Application
Set appAccess = New Access.Application
With appAccess.CurrentDb
.OpenCurrentDatabase Obmen
.Relations.Delete .Relations(0)
.CloseCurrentDatabase
End With
Set appAccess = Nothing
|
| |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 15:33)
|
| | Вот полный код:
Public Sub DeleteAllRelations(strFileDBName As String)
Dim appAccess As Object
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase strFileDBName, True
With appAccess.CurrentDb
Do While .Relations.Count > 0
.Relations.Delete .Relations(0).Name
Loop
End With
appAccess.CloseCurrentDatabase
appAccess.DoCmd.Quit
Set appAccess = Nothing
End Sub
|
| |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 15:26)
|
| | Так CurrentDb у нас будет открываться в объекте appAccess, а не в Application
И в строке
мы работаем с CurrentDb объекта appAccess, а не Application
А поможет точно, я попробовал.  | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 15:24)
|
| | Вы думаете мопожет?
мне же во внешней базе надо рвать
тода .OpenCurrentDatabase Obmen не корректно | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 15:17)
|
| | Поправка:
| |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 15:16)
|
| | Я просто перепошутил.
Связь тама одна
Таблиц две
Не ошибусь
Говорят - метот нот фоунд 
.Relations | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 15:09)
|
| | У людей сомненья какую связь правильно создать, а он их рвет все подряд без разбора. Ужос.  | |
| |
| |
|
|
| |
|
|
| |
to: Lukas
(30.11.2008 в 14:53)
|
| | Еще один вариант, самый(единственно) правильный
With appAccess
Do While .Relations.Count > 0
.Relations.Delete .Relations(0).Name
Loop
End With
|
 | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 14:50)
|
| | Первый вариант рабочий, а второй пока нет. | |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 14:45)
|
| | Возможно, так правильнее:
Dim i As Integer
For i = 0 To appAccess.Relations.Count - 1
appAccess.Relations.Delete appAccess.Relations(i).Name
Next i
|
Вот только не знаю как коллекция Relations нумеруется, с 0 или с 1 | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 14:39)
|
| |
Dim rel As Relation
For Each rel In appAccess.Relations
appAccess.Relations.Delete rel.Name
Next rel
|
| |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 14:30)
|
| | Dim appAccess As Access.Application
Set appAccess = New Access.Application
With appAccess
.OpenCurrentDatabase Obmen
.как порвать всё?
.CloseCurrentDatabase
End With
Set appAccess = Nothing | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 14:30)
|
| |
With appAccess
.Relations.Delete strRelationName
End With
|
| |
| |
| |
| |
|
|
| |
to: Lukas
(30.11.2008 в 14:15)
|
| | пробываю!!!
А что это за оператор (Здесь рвем связь)
Я раньше программно их не рвал
И даже приближонно не знаю как это реализовать и в текущеё то базе, а тут замахнулся на внешнюю  | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 14:01)
|
| | Может как -то так.
strFileDBName-Путь к изменяемой базе.
Открываем ее как текущую:
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase strFileDBName, True
...Здесь рвем связь
appAccess.CloseCurrentDatabase
appAccess.DoCmd.Quit
Set appAccess = Nothing
|
| |
| |
| |
| |
|
|
| |
to: Силыч
(30.11.2008 в 13:42)
|
| | Мне бы разорвать звязь между таблицами в другой базе из текущей программно. | |
| |
| |
| |
|
|
| |
to: час
(30.11.2008 в 13:32)
|
| | currentdb.Relations и т.д. | |
| |
| |
| |
|
|
| | Имеется база ххх . mdb
в ней две таблицы - DOG и KAS - связь один ко многим
Вопрос:
Как из другой базы zzz.mdb ,
программно,
разорвать звязь между таблицами в базе ххх . mdb | |
| |
| |