Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не обновляется исходный dbf-файл, Помогите новичку 
:(
    Опции темы
Dimbl4
Дата 11.9.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 10.9.2007

Репутация: нет
Всего: нет



Мне необходимо открыть DBF-файл, просмотреть его, найти одинаковые значения некоторого поля, если такие есть сделать изменнеия и удалить строки. В DataSet все изменяется, через DataGrid все изменения видно, а сам дбфник не изменяется. smile 

Создаю и открываю соединение с БД, заливаю данные в DataSet и DataGrid (чтоб наглядней):
Код

Private Sub cmdReadDB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdReadDB.Click
        Dim conn As New OleDbConnection
        Dim myConnStr As String
        myConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Test;Extended Properties=dBASE IV;User ID=Admin;Password=;mode=ReadWrite;"
        conn = New OleDbConnection(myConnStr)
        conn.Open()
        Dim strSelect As String = "SELECT* from Test"
        Dim Command As New OleDbCommand(strSelect, conn)
        Dim da As New OleDb.OleDbDataAdapter(strSelect, conn)
        Dim ds As New DataSet
        da.Fill(ds, "Test")
        DataGrid1.DataSource = ds.Tables("Test").DefaultView

For Each rowZap In ds.Tables("test").Rows                          'пробегаю по таблице, считаю кол-во строк
            k += 1             
        Next

For Each rowZap In ds.Tables("test").Rows                       'ищу с одинаковыми значениями
            str = ds.Tables("Test").Rows(i).ItemArray(5)
            str = str.Substring(9, 10)
            For j = i + 1 To k - 1
                str1 = ds.Tables("Test").Rows(j).ItemArray(5)
                str1 = str1.Substring(9, 10)
                If StrComp(str, str1) = 0 Then
                    MsgBox("Равны " & i + 1 & " и " & j + 1 & " записи")
                End If
            Next
            If ds.Tables("Test").Rows(i).ItemArray(6) > 740 Then           'проверяю ограничение на сумму, 
                ds.Tables("Test").Rows(i)("Reccontr") = 740                      'если превышает изменяю
                MsgBox("Сумма в " & i + 1 & " столбце превышала 740 грн")
            End If
            i += 1
        Next
'до удаления еще не дошел, т.к. update еще не работает

        Try                                                                    'пытаюсь обновить
            da.Update(ds.GetChanges(DataRowState.Modified))
            Console.WriteLine("Ok")
        Catch ex As Exception
            Console.WriteLine("No")
        End Try
       
        conn.Close()
        conn.Dispose()
    End Sub


Не работает, пробовал просто da.Update(ds, "Test") аналогично.
Помогите плиз, начинающему с ADO.
PM MAIL   Вверх
LuMee
Дата 12.9.2007, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



Возможно, имеет смысл DataAdapter'у помимо select-команды задать еще и delete-команду? Ну и update с insert до кучи.
PM MAIL   Вверх
Dimbl4
Дата 14.9.2007, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 10.9.2007

Репутация: нет
Всего: нет



Это типа после
Dim strSelect As String = "SELECT* from Test"
Dim Command As New OleDbCommand(strSelect, conn)

Добавить
Dim strDelete As String = "DELETE* from Test"
Dim Command As New OleDbCommand(strDelete, conn)
Dim strUpdate As String = "UPDATE* from Test"
Dim Command As New OleDbCommand(strUpdate, conn)

или
Dim strDelete As String = "DELETE* from Test"
Dim delCommand As New OleDbCommand(strDelete, conn)
Dim strUpdate As String = "UPDATE* from Test"
Dim updCommand As New OleDbCommand(strUpdate, conn)

????
Подскажите если я чего не догоняю. smile 
PM MAIL   Вверх
zaver
Дата 14.9.2007, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

Репутация: нет
Всего: 3



нет. у DataAdapter есть такие св-ва, как: UpdateCommand, SelectCommand, DeleteCommand,... туда надо добваить объекты типа DbCommand
PM MAIL WWW ICQ Skype YIM MSN   Вверх
Dimbl4
Дата 18.9.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 10.9.2007

Репутация: нет
Всего: нет



Типа 

  Dim strUpdate As String = "UPDATE* from Test"
  da.UpdateCommand = New OleDbCommand(strUpdate, conn)


???
 smile 


PM MAIL   Вверх
zaver
Дата 18.9.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

Репутация: нет
Всего: 3



да, кажись
PM MAIL WWW ICQ Skype YIM MSN   Вверх
FreakK
Дата 19.9.2007, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 1.7.2005
Где: Lviv (Ukraine)

Репутация: нет
Всего: нет



Мое, сугубо субьективное мнение: 
1) DataSet.AcceptChanges();перед da.Update(dataTable);
2) Обязательно TableAdapter.UpdateCommand = например ("Update field1,field2,field3... from mytable1 where field1 = ? and filed2 = ? and filed3 =?....")
     в апдейт команд перечисление полей обязательно!
3) также и с DeleteCommand;

P.S.Прошу прощения за код на CSS просто в ВБ не разбираюсь...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0529 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.