Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 | 2 |

 

  Вопрос: Выборка и слияние dbf Добавлено: 10.07.08 20:08  

Автор вопроса:  Votmax  | Web-сайт: basiccenter.narod.ru
Привет все!

Подскажите, пожалуйста, вот такой вопрос: Есть база dbf нужно организовать выборку данных по определенному столбцу, выбранные данные сохранить, а остальные удалить из базы. И еше, есть две одинаковые dbf по столбцам, но разные по значениям, как их слить в одну базу?

Заранее спасибо!

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 10.07.08 21:10
А в чем вопрос конкретно? Как работать с DBF? Ну например через тот же ADO. По столбцу выбирать - как обычно
SELECT столбец FROM таблица WHERE...
выбранные данные сохранить, а остальные удалить из базы
Остальные это какие? Которые не попали в выборку по условию в WHERE, о котором ты умалчиваешь?

Ответить

Номер ответа: 2
Автор ответа:
 Votmax



Вопросов: 72
Ответов: 28
 Web-сайт: basiccenter.narod.ru
 Профиль | | #2
Добавлено: 10.07.08 21:54
Да! Что то вроде этого!

Ответить

Номер ответа: 3
Автор ответа:
 Votmax



Вопросов: 72
Ответов: 28
 Web-сайт: basiccenter.narod.ru
 Профиль | | #3
Добавлено: 10.07.08 21:58
Мне бы просто где нибудь приличный разобранный пример найти, чтоб понятно было.

Ответить

Номер ответа: 4
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #4 Добавлено: 11.07.08 01:47
Ну незнаю, попробуй пример поискать в интернете, может там есть?

Ответить

Номер ответа: 5
Автор ответа:
 Votmax



Вопросов: 72
Ответов: 28
 Web-сайт: basiccenter.narod.ru
 Профиль | | #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-сайт: basiccenter.narod.ru
 Профиль | | #7
Добавлено: 11.07.08 21:56
Спасибо, в принципе, это мне и нужно было!

Ответить

Номер ответа: 8
Автор ответа:
 Votmax



Вопросов: 72
Ответов: 28
 Web-сайт: basiccenter.narod.ru
 Профиль | | #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;" + ";Data Source=C:\;" + "Extended Properties="";DBASE 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-сайт: basiccenter.narod.ru
 Профиль | | #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;" + ";Data Source=C:\;" + "Extended Properties="";DBASE 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-сайт: basiccenter.narod.ru
 Профиль | | #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-сайт: basiccenter.narod.ru
 Профиль | | #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;" + ";Data Source=C:\;" + "Extended Properties="";DBASE 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-сайт: basiccenter.narod.ru
 Профиль | | #15
Добавлено: 17.07.08 18:40
Понятно, а программно их можно удалить?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам