Скорость добавления в Access базу...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 19.08.2006 (Сб) 15:07

Antonariy
Efiop

Спасибо Вам Други, все заработало! Здорово!

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 20.08.2006 (Вс) 8:32

Если позволите - два вопроса:

1. Есть код:
SELECT DISTINCT поля INTO NewTable FROM tblSrc

Работает, но в конце выдает ошибку:
Operation is not allowed when the object is closed

О каком объекте идет речь?

2. Есть код:
With Adodc1
.RecordSource = "SELECT Name INTO tbl2 From tblSrc WHERE tbl2.Title = tblSrc.Title"
.Refresh
End With

Не работает, требует какие-то дополнительные параметры.

Не подскажите ли?
Спасибо!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 20.08.2006 (Вс) 11:37

Потому что этот запрос создает таблицу, а не возвращает записи.
Лучший способ понять что-то самому — объяснить это другому.

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 20.08.2006 (Вс) 13:15

Antonariy
Я понял, спасибо! Меня устраивает. А по второму коду мнения есть?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 20.08.2006 (Вс) 20:27

Тоже самое.
Лучший способ понять что-то самому — объяснить это другому.

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 21.08.2006 (Пн) 8:51

Antonariy
Нет, не так.
Если первый код выполняется и создает таблицу, а только потом дает ошибку, то второй код не выполняется из-за ошибки в синтаксисе.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 21.08.2006 (Пн) 9:10

INTO tbl2 From tblSrc WHERE tbl2.Title = tblSrc.Title
Даже синтаксис знает, что сравнить по полю несуществующей таблицы будет затруднительно...

Summer.05, когда голову включишь?
Лучший способ понять что-то самому — объяснить это другому.

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 22.08.2006 (Вт) 15:38

Antonariy писал(а):
INTO tbl2 From tblSrc WHERE tbl2.Title = tblSrc.Title
Даже синтаксис знает, что сравнить по полю несуществующей таблицы будет затруднительно...

Summer.05, когда голову включишь?


М-да.. А ты не прав, Повелитель...

Дано:
tbl1 - заполнена (8 полей)
tbl3 - пустая (поля аналогичны tbl1)
tbl2 - одно поле Title (заполнено)

Имеется код:

With Adodc1
.RecordSource = "INSERT INTO tbl3 (Title) SELECT Title FROM tbl1"
.Refresh
End With

Код работает, операция выполняется. Однако при добавлении в код условия WHERE

With Adodc1
.RecordSource = "INSERT INTO tbl3 (Title) SELECT Title FROM tbl1 WHERE tbl1.Title = tbl2.Title"
.Refresh
End With

выпадает ошибка: отсутствуют значения для одного или нескольких требуемых параметров.

Не подскажите, где затычка?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.08.2006 (Вт) 16:07

tbl2 отсутствует в выборке :!:

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 22.08.2006 (Вт) 16:36

Konst_One
Во, правильно! Спасибо!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.08.2006 (Вт) 21:21

Summer.05, а когда двумя постами выше тебе то же самое сказал Antonariy, тебе почему-то показалось, что он не прав?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 22.08.2006 (Вт) 21:51

GSerg
Я понял так, что он имел в виду не существующую таблицу. А она существует. Только не включена была в запрос. Здесь нет разницы?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.08.2006 (Вт) 21:54

С моей точки зрения, сказанное двумя предыдущими ораторами эквивалентно. Так что для меня да, разницы нет.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 22.08.2006 (Вт) 22:46

GSerg

Если так, то приношу свои извинения!

Antonariy
Прошу извинить, Повелитель! :(

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 23.08.2006 (Ср) 9:03

GSerg писал(а):С моей точки зрения, сказанное двумя предыдущими ораторами эквивалентно. Так что для меня да, разницы нет.
Не совсем.
1й запрос:
SELECT Name INTO tbl2 From tblSrc WHERE tbl2.Title = tblSrc.Title
Здесь парсер увидел INTO и решил, что таблица tbl2 не существует или будет все равно удалена, поэтому какой смысл ее использовать в WHERE?
2й запрос:
INSERT INTO tbl3 (Title) SELECT Title FROM tbl1 WHERE tbl1.Title = tbl2.Title
Здесь действительно, tbl2 отсутствует в выборке.

Судя по всему, автору нужен запрос такого типа:
Код: Выделить всё
INSERT INTO tbl3 (Title) SELECT Title FROM tbl1 WHERE Title in (select Title from tbl2)
Хотя глубокого смысла в нем не вижу.
Лучший способ понять что-то самому — объяснить это другому.

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 23.08.2006 (Ср) 14:39

Antonariy
Спасибо за разбор полетов!

Если можно, объясню логику словами.
Есть таблица tbl1. В ней, как я уже говорил, 8 полей, 38к тем диссертаций. Все поля заполнены.

Есть таблица tbl2. В ней только одно поле Title, но в этой таблице уже 26к тем диссертаций, так как она содержит убранное дублирование тем из таблицы tbl1. Но в ней нет данных по другим семи полям.

Замысел:

Отобрать в таблицу tbl3 из tbl1 содержание ВСЕХ ее полей, но вывести в tbl3 не все 38к тем, а только те, которые уже есть в tbl2.
Иными словами, из tbl2 взять содержимое поля Title, и к нему привязать содержимое других полей из tbl1, где эти названия совпадают.

Поэтому мне и надо соcтавить код, где WHERE tbl1.Title = Tbl2.Title
А он и не получается, хотя чувствую, что истина где-то рядом :shock:

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 128

    TopList