Страница: 1 | 2 |
Вопрос: Выборка и слияние dbf
Добавлено: 10.07.08 20:08
Автор вопроса: Votmax | Web-сайт:
Привет все!
Подскажите, пожалуйста, вот такой вопрос: Есть база dbf нужно организовать выборку данных по определенному столбцу, выбранные данные сохранить, а остальные удалить из базы. И еше, есть две одинаковые dbf по столбцам, но разные по значениям, как их слить в одну базу?
Заранее спасибо!
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 10.07.08 21:10
А в чем вопрос конкретно? Как работать с DBF? Ну например через тот же ADO. По столбцу выбирать - как обычно
SELECT столбец FROM таблица WHERE...
Номер ответа: 2
Автор ответа:
Votmax
Вопросов: 72
Ответов: 28
Web-сайт:
Профиль | | #2
Добавлено: 10.07.08 21:54
Да! Что то вроде этого!
Номер ответа: 3
Автор ответа:
Votmax
Вопросов: 72
Ответов: 28
Web-сайт:
Профиль | | #3
Добавлено: 10.07.08 21:58
Мне бы просто где нибудь приличный разобранный пример найти, чтоб понятно было.
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 11.07.08 01:47
Ну незнаю, попробуй пример поискать в интернете, может там есть?
Номер ответа: 5
Автор ответа:
Votmax
Вопросов: 72
Ответов: 28
Web-сайт:
Профиль | | #5
Добавлено: 11.07.08 21:02
Я понял, что все можно делать инструкциями SQL, так? А база лежит не на сервере и не в SQL, а просто отдельная дбф, подскажите как ее подключить, с помошью какого элемента. Плиз.
Номер ответа: 6
Автор ответа:
HACKER
Разработчик 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
Автор ответа:
Votmax
Вопросов: 72
Ответов: 28
Web-сайт:
Профиль | | #7
Добавлено: 11.07.08 21:56
Спасибо, в принципе, это мне и нужно было!
Номер ответа: 8
Автор ответа:
Votmax
Вопросов: 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;" + "ata Source=C:\;" + "Extended Properties=""BASE IV;"";"""
db.Open
Я даже смог применить инструкцию
RS.Open "delete * From OLD.DBF", db, , , adCmdText
А как мне вывести таблицу на DataGrid1 к примеру???
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 12.07.08 22:08
У DataGrid есть свойство DataSource (Источник данных)
Т.е. что-то вроде
DataGrid1.DataSource = RS
Номер ответа: 10
Автор ответа:
Votmax
Вопросов: 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;" + "ata Source=C:\;" + "Extended Properties=""BASE IV;"";"""
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
Автор ответа:
Votmax
Вопросов: 72
Ответов: 28
Web-сайт:
Профиль | | #11
Добавлено: 14.07.08 21:51
Я все в ищу в инете, везде такие строчки написаны, как же правильно сделать? Мне нужно просто открыть базу дбф, не нужные строки удалить из нее и закрыть. Я так понимаю это пара строчек, но вот как их правильно написать - не знаю.
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 15.07.08 02:23
RS.Open "delete From EK472008.DBF where
Здесь имя таблицы должно быть, а не имя файла БД.
Номер ответа: 13
Автор ответа:
Votmax
Вопросов: 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;" + "ata Source=C:\;" + "Extended Properties=""BASE IV;"";"""
db.Open
comm.ActiveConnection = db
comm.CommandText = "delete From OLD.DBF where DX between 1 and 5"
comm.Execute
Программа отрабатывает без каких либо сообщений об ошибке.Но база после этого остается не отредактированной. Хотя если поменять имя столбика в таблице на неправильное, то появится ошибка, т.е. база открывается, команда проходит, а результата никакого! В чем дело, никто не знает?
Я предположил, что просто нет таких записей, однако проверил код на других базах, даже по текстовым полям с удалением нужной текстовой строки, но результат один и то же. Подскажите, пожалуйста.
Если есть другие решения, говорите с примерами, всему буду рад!
Номер ответа: 14
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #14
Добавлено: 17.07.08 13:16
Если я правиьно помню, то в dbf записи физически сначала не удаляются, а помечаются как удаленные. Для их физического удаления, например в фоксе надо выполнить команду pack.
Номер ответа: 15
Автор ответа:
Votmax
Вопросов: 72
Ответов: 28
Web-сайт:
Профиль | | #15
Добавлено: 17.07.08 18:40
Понятно, а программно их можно удалить?