Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 62
1

Подключение к dbf в VB.NET

11.02.2013, 15:47. Показов 5552. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
VS2010Express
Подключаюсь к базе таким образом:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        Dim oleConnect As New OleDb.OleDbConnection
        Dim oleCommanda As New OleDb.OleDbCommand
        Dim Path As String = "z:\"
        Dim adapter As OleDbDataAdapter
        Dim ds As New DataSet
        Try
            oleConnect.ConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=dBASE IV;User ID=Admin;Password=", Path.ToString)
            oleCommanda.Connection = oleConnect
            oleCommanda.CommandType = CommandType.Text
            oleCommanda.CommandText = "SELECT * FROM password"
            adapter = New OleDbDataAdapter(oleCommanda)
            oleConnect.Open()
            adapter.Fill(ds, "password")
            oleConnect.Close()
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        Finally
            If Not oleConnect Is Nothing Then
                If oleConnect.State <> ConnectionState.Closed Then
                    oleConnect.Close()
                End If
            End If
        End Try
        Me.DataGridView1.DataSource = ds.Tables("password").DefaultView
говорит "Ошибка синтаксиса в предложении FROM", хотя меняю допустим одну букву в имени базы например passwor, то спокойно и без ошибок подключаюсь к ней. И к любой другой и с другим именем подключаюсь. Помогите разобраться!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2013, 15:47
Ответы с готовыми решениями:

Почему ADO .Net не коннектится с dbf базой, а с ADODB всё проходит?
Dim conStr As String = 'Provider=Microsoft OLE DB Provider for ODBC Drivers;Password='''';User...

Подключение к Interbase в VS .NET
Размещаю компонент oleDbConnection1, затем связываю его, используя поставщик данных Microsoft OLE...

Конвертирование файлов DBF III в DBF IV
Существует некая форма, которая подключается к dbf файлам и берет из них данные. строка...

Динамическое подключение dll к проекту VB.net
Подскажите dll содержит следующую функцию: Public Class MathClass Public Shared Function...

7
Заблокирован
11.02.2013, 16:03 2
Цитата Сообщение от archimeds Посмотреть сообщение
password
Быть может глобальная переменная или еще что-то, а можно на полный исходник взглянуть вместе с базой данных выложи.

Добавлено через 2 минуты
VB.NET
1
2
3
4
    Public Con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=dBASE IV;User ID=Admin;Password=", Path.ToString) ' Переменная для подключения базы
    Public SqlCom As OleDb.OleDbCommand ' Переменная для Sql запросов
    Public DT As New Data.DataTable ' Таблица для хранения результатов запроса
    Public DA As OleDb.OleDbDataAdapter
VB.NET
1
2
3
4
5
6
7
8
9
10
    Public Sub LoadAll() 'Процедура чтения всей таблицы из базы 
        DT.Clear() 'Очищаем таблицу
        SqlCom = New OleDb.OleDbCommand("SELECT * FROM password", Con) ' Указываем строку запроса и привязываем к соединению
        Con.Open() ' Открываем соединение
        SqlCom.ExecuteNonQuery() 'Выполняем запрос
        DA = New OleDb.OleDbDataAdapter(SqlCom) 'Через адаптер получаем результаты запроса
        DA.Fill(DT) ' Заполняем таблицу результатми
        Me.DataGridView1.DataSource = DT ' Привязываем Грид к источнику данных
        Con.Close() ' Закрываем соединение
    End Sub
Что скажет на такой код ?
1
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 62
11.02.2013, 17:14  [ТС] 3
inv.DS, Спасибо за отзыв и код.
Базу к сожалению не смогу выложить, в силу закрытости инфы, но могу сказать точно с индексами всё в порядке.
Твой код не проходит с той же ошибкой.
Мой исходник почти весь был в вопросе, писать только начал.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Imports System.Data
Imports System.Data.OleDb
 
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
        Dim oleConnect As New OleDb.OleDbConnection
        Dim oleCommanda As New OleDb.OleDbCommand              
        Dim Path As String = "z:\"
        Dim adapter As OleDbDataAdapter
        Dim ds As New DataSet
        Try
            oleConnect.ConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=dBASE IV;User ID=Admin;Password=", Path.ToString)
            oleCommanda.Connection = oleConnect
            oleCommanda.CommandType = CommandType.Text
            oleCommanda.CommandText = "SELECT * FROM password"
            adapter = New OleDbDataAdapter(oleCommanda)
            oleConnect.Open()
            adapter.Fill(ds, "password")
            oleConnect.Close()
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        Finally
            If Not oleConnect Is Nothing Then
                If oleConnect.State <> ConnectionState.Closed Then
                    oleConnect.Close()
                End If
            End If
        End Try
        MessageBox.Show("Таблица создана.", "Экспорт данных")
        Me.DataGridView1.DataSource = ds.Tables("password").DefaultView
 
    End Sub
 
End Class
Собственно задача то и невелика, нужно подключиться к базе найти в столбце "active" значение "1", если оно есть, выдать сообщение, если нет идти дальше.
0
Заблокирован
11.02.2013, 17:20 4
Цитата Сообщение от archimeds Посмотреть сообщение
нужно подключиться к базе найти в столбце "active" значение "1"
VB.NET
1
SqlCom = New OleDb.OleDbCommand("SELECT * FROM active WHERE id='1'", Con) ' Указываем строку запроса и привязываем к соединению
Давай посмотрим удаленно на твою проблему через TeamViwer. Поставь программу и ID и пароль в личку скинь. Skype: dan-taraz
1
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 62
12.02.2013, 10:49  [ТС] 5
На рабочей машине нет соединения с внешним миром. Тут какбы задача для экстрасенсов. Думаю уже может в sql зарезервировано слово password, решить проблему копированием в темп и переименованием базы и всё.

Добавлено через 10 минут
Это похоже с машиной трабла, потому что беру пустую левую базу, называю её password.dbf, пробую подключиться и на тебе Ошибка синтаксиса в предложении FROM., тут же переименовываю её в passwor.dbf и сразу подключаюсь.

Добавлено через 16 часов 35 минут
Вопрос остаётся открытым!
VB.NET
1
SqlCom = New OleDb.OleDbCommand("SELECT * FROM passwor", Con)
- работает
VB.NET
1
SqlCom = New OleDb.OleDbCommand("SELECT * FROM password", Con)
- не работает, компилил , открывал на других машинах, тот же эффект. То ли лыжи не едут.....
0
Заблокирован
12.02.2013, 12:41 6
Цитата Сообщение от archimeds Посмотреть сообщение
password
Скорее всего зарезервированная переменная. Попробуй переименуй. Или как я предлагал, давай по TeamViwer посмотрю какие там траблы.
0
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 62
12.02.2013, 13:14  [ТС] 7
inv.DS, Спасибо за помощь,за отзыв, по teamview никак, инета нету! Решил вот так сойдёт:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    Public Con As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp;Extended Properties=dBASE IV; User ID=Admin;Password=;")
    Public SqlCom As OleDb.OleDbCommand
    Public DT As New Data.DataTable
    Public DA As OleDb.OleDbDataAdapter
    Dim path1 As String = "g:\DBF\password.dbf"
    Dim path2 As String = "c:\temp\pass.dbf"
 
    Public Sub LoadAll() 
        DT.Clear()
        SqlCom = New OleDb.OleDbCommand("SELECT * FROM pass where active=1", Con)
        Con.Open()
        SqlCom.ExecuteNonQuery()
        DA = New OleDb.OleDbDataAdapter(SqlCom)
        DA.Fill(DT)
        Me.DataGridView1.DataSource = DT
        Con.Close()
    End Sub
 
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If IO.File.Exists(path1) Then
            If IO.File.Exists(path2) Then
                IO.File.Delete(path2)
            End If
            IO.File.Copy(path1, path2)
        Else
            MessageBox.Show("Файла не существует", "Внимание!")
        End If
        Call LoadAll()
    End Sub
А можешь подсказать как создать условие на основе данного подключения:
Если нет значений active=1, то хорошо идём дальше иначе message со строкой содержащей поле с этим значением?
Не пойму просто с чем сравнить результат выполненного запроса.
0
Заблокирован
12.02.2013, 13:32 8
Могу предложить сравнивать с количеством строк отображенными в DataGridView.

VB.NET
1
2
3
4
5
6
        If Me.DataGridView1.RowCount = 0 Then
            MsgBox("Нет строк в DataGridView")
            '  ////////////////////
            '   Шагаем дальше.
            ' ////////////////////
        End If
На остальное голова не варит.

Добавлено через 2 минуты
VB.NET
1
Me.DataGridView1.DataSource = DT
Код ставь после.
1
12.02.2013, 13:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2013, 13:32
Помогаю со студенческими работами здесь

VB.Net... подключение Microsoft Word 8.0/9.0 Object Library...
Для работы с ini файлами и реестром раньше использовал библиотеку Microsoft Word 8.0/9.0 Object...

Как создать подключение посредством ADO.NET?
Здравствуйте! Пытаюсь создать подключение посредством ADO. Никак не подключается. Помогите...

Подключение библиотеки DLL написанной на Си к проекту VB.NET
Мне нужен подробный пример написания библиотеки на Си и ее подключения к проекту VB.NET. Ссылку...

Подключение DBF файла
Всем привет. Объясните пожалуйста как сделать простую связь программы в Delphi и файлом БД *.dbf...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru