Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.25;
Скачать: CL | DM;

Вниз

Проблема с ADO + MSAccess   Найти похожие ветки 

 
tesseract ©   (2004-01-28 13:19) [0]

Следующий трабл - имеется несколько файлов *.MDB - они содержа несколько таблиц. Эти таблицы надо переместить в одну базу данных, чтобы сделать выборку и тд. Кто-нибудь знает почему в таких случаях не работает clone и Adocommand.execute?


 
sniknik ©   (2004-01-28 15:23) [1]

> Следующий трабл - имеется несколько файлов *.MDB
да точно это трабл, нужно срочно от таких файлов избавлятся. ;о)

> Кто-нибудь знает почему в таких случаях не работает clone и Adocommand.execute?
в каких случаях? и причем здесь clone к базе совсем не относяшийся, и "execute" без команды на execute?
не скромничай приведи весь список случаев и неработающих вещей. (у меня вот холодильник не работает подозреваю и сдесь рука мелкософта с борманом ;о))))

кстати, чтобы сделать выборку совсем не обязательно все таблицы в одну базу перемесщать.


 
denisov   (2004-01-28 20:12) [2]

хехе.) Импорт... не пробывал еси на то пошло?


 
tesseract ©   (2004-01-29 09:35) [3]

Случай в другом - команда на execute "Select * from "TableName"", просто имеется этих баз - 20-30, отчёты разных организаций и их надо в авто режиме сливать в одну, для генерации отчётов, clone что-то делает, точнее пишет что что-то сделал. Но нужно просто копировать содержание одной из таблиц всех баз данных в результирующую.

Тренируй гемморой нахывается.


 
sniknik ©   (2004-01-29 10:45) [4]

clone делает копию рекордсета.
по команде execute "Select * from TableName" датасет получает запрошеный рекордсет.
в чем геморой? и зачем копировать?

так и не понял вопроса, но предупреждение уже созрело (лишним не будет)
> просто имеется этих баз - 20-30
размер баз? если ты реализуеш свою схему с копированием то в одну базу все просто не поместится.
переосмысль задачу. думай о том зачем тебе это тужно (копирование) а не как это сделать.
(ну не верю я что задача именно в том чтобы переписать, наверняка "скопировать" это только средство)
> для генерации отчётов
это отмазка, отчеты не работают непосредственно с базами, а как получен рекордсет и из скольких баз им глубоко плевать.


 
tesseract ©   (2004-01-30 17:07) [5]

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


 
sniknik ©   (2004-01-30 17:21) [6]

ну жчтож, я предупреждал

делаеш запрос
INSERT INTO Table1 SELECT * FROM LinkTable1
Table1 куда копируеш
LinkTable прилинкованная таблица из другой базы (линк в аксессе делаеш, просто, по меню полазь увидиш)
и т.д. для остальных.
запрос можеш сделать в самом аксессе. (не парься пока с программированием, просто попробуй собрать все в одном... посмотри на размер.... подумай что будет через полгода)


 
Nikolai_S ©   (2004-01-30 17:23) [7]

INSERT INTO TABLE1(FIELD1, FIELD2)
SELECT FIELD1, FIELD2 FROM [C:\my_db.mdb].[TABLE2]


 
BAYES ©   (2004-02-01 16:33) [8]

Заинтересовался этой "веткой".
Но при выполнения запроса выскакивает
ADOQverty1: CommandText does not return a result set
Еще как отловить ошибку при копировании одинаковых ключевых полей?
Спасибо.


 
chtr ©   (2004-02-02 07:19) [9]


> Но при выполнения запроса выскакивает
> ADOQverty1: CommandText does not return a result set

Конечно у Insert нет "RESULT SET" надо не Open, а ExecSQL;


> Еще как отловить ошибку при копировании одинаковых ключевых
> полей?

Наверно надо изменять значения в ключевых полях? (Не уверен что понял вопрос)


 
tesseract ©   (2004-02-02 09:54) [10]

Спасибо sniknik пашет на ура, только не всегда быстро Ж-)


 
tesseract ©   (2004-02-02 09:54) [11]

Спасибо sniknik пашет на ура, только не всегда быстро Ж-)


 
BAYES ©   (2004-02-02 10:08) [12]

>Конечно у Insert нет "RESULT SET" надо не Open, а ExecSQL;
Блин точно!

>Наверно надо изменять значения в ключевых полях? (Не уверен что понял вопрос)
С этой штукой сложнее. При первом копировании, все ОК! А при повторно копировании, выскакивает :"Изменения не были внесены из-за повторяющихся значений в индексе, ключевых полях и индексе......и т.д.". Изменять их не нужно, просто нужно "выловить" эту ошибку.
>........FROM [C:\my_db.mdb].[TABLE2] [7]
C:\my_db.mdb эта штука не реальна, база только открыв. из директории проекта или партишена проекта. При данном указывании появляеться: "Неправильно определен объект Parameter....."
Мутил долго, но так и не получилось откр. базу с того места где мне нужно.


 
chtr ©   (2004-02-02 10:20) [13]


>Изменять их не нужно, просто нужно "выловить" эту ошибку.

Что значит выловить? Ты хочешь добавит в таблицу запись с уже имеющимся значением в ключевом поле. Т.е. поле не допускает повторяющихся значений. Либо убирай ключ, либо изменяй значения. Может тебе Update нужен?


 
BAYES ©   (2004-02-02 10:25) [14]

Нет! Update не нужен, просто мне вместо этого стандартного сообщени вывести своё.


 
sniknik ©   (2004-02-02 10:28) [15]

> Спасибо sniknik пашет на ура, только не всегда быстро Ж-)
не бустро это еще не самое плохое с чем сталкнешся при таком подходе.

> При первом копировании, все ОК! А при повторно копировании, выскакивает:"Изменения не были внесены из-за повторяющихся значений в индексе
не задавай поля с уникальньым индексом, проще, если ключь, сделать его автоинкрементом и не указывать поле при переносе.

> C:\my_db.mdb эта штука не реальна,
почему, это?
просто отключи автоопределение параметров перед внесением запроса.
и лутше наверное как синтаксис поправить как мелкософт в хелпах советует

INSERT INTO TABLE1(FIELD1, FIELD2)
SELECT FIELD1, FIELD2 FROM TABLE2 IN "C:\my_db.mdb"


 
chtr ©   (2004-02-02 11:45) [16]


> BAYES © (02.02.04 10:25) [14]

Наверно ты ее не выловишь. Может лучше добавлять записи которых нет в таблице? что нить вроде

INSERT INTO TAB1 SELECT TAB2.*
FROM TAB2 LEFT JOIN TAB1 ON TAB2.id = TAB1.id
WHERE TAB1.id IS NULL

Или как говорит

> sniknik © (02.02.04 10:28) [15]

Делай автоинкремент.


 
BAYES ©   (2004-02-02 12:16) [17]

>мелкософт в хелпах советует...
Можно поинтересоваться, а где эти хелпы можно посмотреть.
Спасибо, с твоим примером все заработало.

>Делай автоинкремент.
Естественно он есть. Именно он и ругаеться при копировании второй раз одних и тех же данных этого поля. Конечно это не смертельный случай, но хотелось бы вместо этого длинного рассказа-описания-ошибки, вывести свою, маленькую.


 
sniknik ©   (2004-02-02 12:40) [18]

> Можно поинтересоваться, а где эти хелпы можно посмотреть.
JETSQL40.CHM хелп поставляется с ms офисом (xp/2000 точно, ранше не смотрел)

>>Делай автоинкремент.
> Естественно он есть. Именно он и ругаеться при копировании второй раз одних и тех же данных этого поля.
не указывай его в запросе, просто пропусти, * тоже не используй.



Страницы: 1 вся ветка

Текущий архив: 2004.02.25;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.047 c
14-80089
Zlatov2001
2004-02-06 00:50
2004.02.25
Печать таблиц (StringGrid)


3-79601
Merry
2004-02-02 13:05
2004.02.25
запрос SQL


9-79520
AQUALITY
2003-08-16 18:59
2004.02.25
Вопрос о коллизии


14-80111
able
2004-02-05 14:54
2004.02.25
SATA???


7-80336
ed_30
2003-12-06 23:29
2004.02.25
Висит ли процесс?