Вопрос: Выборка и слияние dbf | Добавлено: 10.07.08 20:08 |
Автор вопроса: ![]() ![]() |
Привет все!
Подскажите, пожалуйста, вот такой вопрос: Есть база dbf нужно организовать выборку данных по определенному столбцу, выбранные данные сохранить, а остальные удалить из базы. И еше, есть две одинаковые dbf по столбцам, но разные по значениям, как их слить в одну базу? Заранее спасибо! |
Ответы | Всего ответов: 16 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #1 | Добавлено: 10.07.08 21:10 |
А в чем вопрос конкретно? Как работать с DBF? Ну например через тот же ADO. По столбцу выбирать - как обычно
SELECT столбец FROM таблица WHERE... выбранные данные сохранить, а остальные удалить из базы Остальные это какие? Которые не попали в выборку по условию в WHERE, о котором ты умалчиваешь?
|
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 72 Ответов: 28 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 10.07.08 21:54 |
Да! Что то вроде этого! |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 72 Ответов: 28 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 10.07.08 21:58 |
Мне бы просто где нибудь приличный разобранный пример найти, чтоб понятно было. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #4 | Добавлено: 11.07.08 01:47 |
Ну незнаю, попробуй пример поискать в интернете, может там есть? |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 72 Ответов: 28 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 11.07.08 21:02 |
Я понял, что все можно делать инструкциями SQL, так? А база лежит не на сервере и не в SQL, а просто отдельная дбф, подскажите как ее подключить, с помошью какого элемента. Плиз. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #6 | Добавлено: 11.07.08 21:23 |
Элемент никакой не нужен. Нужно подключить ADO библиотеку в Project>>References. Далее просто объявлять нужный ADO объект...
Например: Dim conn as New ADOConnection Почитайте статьи про ADO, которых в интернете полно. Какую БД подключить к ADO без разницы - главное чтобы провайдер этой БД был установлен, и соответственно правильно написать строку подключения. Сам синтаксис SQL может отличаться не много, но банальные SELECT..FROM..WHERE я думаю одинаковые во всех БД. Сложно вам помочь, когда вы не имете малейшего представление о рабте с БД. Форум всётаки предназначен для более конкретных вопросов. Ответы на банальные вопросы легко найти в интернете\книжках. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 72 Ответов: 28 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 11.07.08 21:56 |
Спасибо, в принципе, это мне и нужно было! |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 72 Ответов: 28 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 11.07.08 23:28 |
Вот что у меня получилось:
Set db = New ADODB.Connection Set RS = New ADODB.Recordset db.CursorLocation = adUseClient db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + " ![]() ![]() db.Open Я даже смог применить инструкцию RS.Open "delete * From OLD.DBF", db, , , adCmdText А как мне вывести таблицу на DataGrid1 к примеру??? |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #9 | Добавлено: 12.07.08 22:08 |
У DataGrid есть свойство DataSource (Источник данных)
Т.е. что-то вроде DataGrid1.DataSource = RS |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 72 Ответов: 28 |
Web-сайт: Профиль | Цитата | #10 | Добавлено: 14.07.08 21:01 |
Я пишу:
Set db = New ADODB.Connection Set RS = New ADODB.Recordset db.CursorLocation = adUseClient db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + " ![]() ![]() db.Open RS.Open "delete From EK472008.DBF where (soato not between 10 and 20) and (soato not between 40 and 50)", db, , , adCmdText А программа выдает: В первый раз - такой тип сортировки не поддерживается операционной системой Во второй раз - отсутствует значение для одного или нескольких требуемых параметров Что делать??? |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 72 Ответов: 28 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 14.07.08 21:51 |
Я все в ищу в инете, везде такие строчки написаны, как же правильно сделать? Мне нужно просто открыть базу дбф, не нужные строки удалить из нее и закрыть. Я так понимаю это пара строчек, но вот как их правильно написать - не знаю. |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #12 | Добавлено: 15.07.08 02:23 |
RS.Open "delete From EK472008.DBF where
Здесь имя таблицы должно быть, а не имя файла БД. |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 72 Ответов: 28 |
Web-сайт: Профиль | Цитата | #13 | Добавлено: 15.07.08 21:17 |
Я выяснил, что нужно делать через сомманд, нашел вроде как пример, делаю...
Set db = New ADODB.Connection Set RS = New ADODB.Recordset Set com = New ADODB.Command db.CursorLocation = adUseClient db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + " ![]() ![]() db.Open comm.ActiveConnection = db comm.CommandText = "delete From OLD.DBF where DX between 1 and 5" comm.Execute Программа отрабатывает без каких либо сообщений об ошибке.Но база после этого остается не отредактированной. Хотя если поменять имя столбика в таблице на неправильное, то появится ошибка, т.е. база открывается, команда проходит, а результата никакого! В чем дело, никто не знает? Я предположил, что просто нет таких записей, однако проверил код на других базах, даже по текстовым полям с удалением нужной текстовой строки, но результат один и то же. Подскажите, пожалуйста. Если есть другие решения, говорите с примерами, всему буду рад! |
Номер ответа: 14 Автор ответа: ![]() ![]() ICQ: 237822510 Вопросов: 28 Ответов: 1182 |
Профиль | Цитата | #14 | Добавлено: 17.07.08 13:16 |
Если я правиьно помню, то в dbf записи физически сначала не удаляются, а помечаются как удаленные. Для их физического удаления, например в фоксе надо выполнить команду pack. |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 72 Ответов: 28 |
Web-сайт: Профиль | Цитата | #15 | Добавлено: 17.07.08 18:40 |
Понятно, а программно их можно удалить? |
|