Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

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

 

  Вопрос: Удаление всех записей в dbf файле Добавлено: 18.10.05 10:23  

Автор вопроса:  SerJEANt | ICQ: 3132838 

Ответить

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

Номер ответа: 16
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #16 Добавлено: 18.10.05 16:06
Видимо в случае dbf да.

А как ты вообще работаешь с базой, не зная имена её таблиц, которые ты, по идее, и должен был задавать?

Ответить

Номер ответа: 17
Автор ответа:
 SerJEANt



ICQ: 3132838 

Вопросов: 10
Ответов: 38
 Профиль | | #17 Добавлено: 18.10.05 16:18
Видимо в случае dbf да.

Тагды так, PRIHOD.DBF - это имя файла:
Adodc1.RecordSource = "TRUNCATE TABLE PRIHOD.DBF;"
Adodc1.Refresh
Пробовал и без расширения (DBF) писать, и указать полный путь к файлу, дает ту же самую ошибку.

PSS Господа, ежели мы уж так зашли в тупик в такой простой ситуации, тогда кто-нибудь может здесь описать подробно как бы он поступил если ему нужно было бы всего лишь навсего удалить все записи в файле *.DBF с помошью средств VB_6.0! Очень прошу!

Ответить

Номер ответа: 18
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #18 Добавлено: 18.10.05 16:25
Тут вопрос в том, чего у тебя за формат DBF...
Вот это например для FoxPro:
private sub connect()

dim cn As New Connection
dim rs
dim stmp as string

stmp=inputbox("data path:";)
'например "c:\dbfdata"

cn.ConnectionString = "Provider=MSDataShape;Data Provider=MSDASQL.1;User ID="""";Extended Properties="";Driver={Microsoft Visual FoxPro Driver};UID=;PWD=;SourceDB=" & db & ";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"""
cn.Open
If Err.Number <> 0 Then
MsgBox Err.Description
Exit Sub
End If

Set rs = cn.OpenSchema(adSchemaTables)

Do While Not rs.EOF
msgbox rs("table_name";)
rs.movenext
loop


end sub

Ответить

Номер ответа: 19
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #19 Добавлено: 18.10.05 16:25
А ты попробуй мож получится.:)

Ответить

Номер ответа: 20
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #20 Добавлено: 18.10.05 16:33
Это я SerJEANt.:)

Ответить

Номер ответа: 21
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #21 Добавлено: 18.10.05 16:37
1. У меня нет DBFки...
2. Идем в Поиск по сайту: http://www.vbnet.ru/forum/search.aspx
далее:
Что искать: dbf
Где искать: В теме
Форум: Работа с данными

Ответить

Номер ответа: 22
Автор ответа:
 SerJEANt



ICQ: 3132838 

Вопросов: 10
Ответов: 38
 Профиль | | #22 Добавлено: 18.10.05 16:42
User Unknown
Dbf мне достался в наследство, не знаю в чем уж его сделали, но почистить нужно именно его.
Поробовал этот пример для FoxPro, вываливается на строчке cn.Open
со словами:
[мелкософт][ODBC Driver Manager] Driver's SQLSetConnectAttr failed

Андрей
Чего попробовать то? Я уж запарился с этим файлом :-) Буду рад любому совету.

Ответить

Номер ответа: 23
Автор ответа:
 SerJEANt



ICQ: 3132838 

Вопросов: 10
Ответов: 38
 Профиль | | #23 Добавлено: 18.10.05 16:44
Ежели надо могу подогнать эту Dbf-ку, она маленькая(8kb) :)

Ответить

Номер ответа: 24
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #24 Добавлено: 18.10.05 17:48
Да уж спасибочки. Грохни ее и всех делов.
Попробуй Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=";DSN=Файлы dBASE;DBQ=C:\DOWNLOADS\DATABASE;DefaultDir=C:\DOWNLOADS\DATABASE;DriverId=533;MaxBufferSize=2048;PageTimeout=5;
Или поставь на форму Data1. Там уж наверно разберешься?

Ответить

Номер ответа: 25
Автор ответа:
 CyRax



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #25
Добавлено: 19.10.05 05:54
Тебе удалить или пометить? Если удалить так обрежь файл под описателем полей и будет тебе пустая база. Пометить на удаление тоже не беда кстати.

Ответить

Номер ответа: 26
Автор ответа:
 CyRax



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #26
Добавлено: 19.10.05 07:06
Это тебе "Если ничего не помогло..."
Private Type FieldDescriptor
 FieldName(10) As Byte
 FieldType As Byte
 FieldAddr As Long
 FieldLen As Byte
 ;DecimalLen As Byte
 Reserved1 As Integer
 WorkID As Byte
 Reserved2 As Integer
 SET_FIELDS As Byte
 Reserved4(6) As Byte
 ;Dbase4MDX As Byte
End Type

Private HeaderColumns(255) As FieldDescriptor, HeaderColumnsIDx As Byte

Private Type DBFHDR
 Flag As Byte               '1
 YearMonthDay(2) As Byte    '4
 RowsCount As Long          '8
 HeaderSize As Integer      '10
 RowSize As Integer         '12
 Reserved(16) As Byte
 Unknown65 As Byte
 Reserved1(1) As Byte
End Type

Private DbfInfo As DBFHDR, hFileDBF As Long

Public Function OpenDBF(FileName As String) As Boolean
 If Len(Dir$(FileName)) = 0 Then Exit Function
 Dim GetDescriptors As Boolean
 hFileDBF = FreeFile
 Open FileName For Binary As hFileDBF
  If LOF(hFileDBF) < Len(DbfInfo) Then Exit Function
  Get #hFileDBF, , DbfInfo
 
  GetDescriptors = True
  While GetDescriptors
   Get #hFileDBF, , HeaderColumns(HeaderColumnsIDx)
   If HeaderColumns(HeaderColumnsIDx).FieldName(0) = 13 Then
     GetDescriptors = False
   Else
     HeaderColumnsIDx = HeaderColumnsIDx + 1
   End If
   If (Seek(hFileDBF) + Len(HeaderColumns(0))) > LOF(hFileDBF) Then GetDescriptors = False
  Wend
 Close hFileDBF
 OpenDBF = True
End Function

Private Sub Form_Load()
 If OpenDBF("test.dbf";) = False Then MsgBox "Error", 16: Exit Sub
 
 ;DbfInfo.RowsCount = 0

 hFileDBF = FreeFile
 If Dir$("test2.dbf";) <> "" Then Kill "test2.dbf"
 Open "test2.dbf" For Binary As hFileDBF
  Put #hFileDBF, 1, DbfInfo
  Dim C As Byte
  For C = 0 To HeaderColumnsIDx - 1
      Put #hFileDBF, , HeaderColumns(C)
  Next C
      Put #hFileDBF, , CByte(&HD)
      Put #hFileDBF, , CByte(&HA)
 Close hFileDBF
End Sub

Ответить

Номер ответа: 27
Автор ответа:
 SerJEANt



ICQ: 3132838 

Вопросов: 10
Ответов: 38
 Профиль | | #27 Добавлено: 19.10.05 08:50
Андрей
Попробуй...

А чем эта строка отличается от моей? Я сейчас вот их сравнил и отличий кроме строки "Initial Catalog=..." не нашел.
Или поставь на форму Data1

Привожу цитату из первого моего поста:
Удаляем с помощью DATA, все проходит нормально и файл оказывается пустым, но размер файла при таком удалении записей остается неизменным, что не есть хорошо.
В последующем стало ясно, что удаление с помощью ДАТЫ не упаковывает базу, а упаковать dbf с помощью CompactDatabase не представляется возможным, оно с dbf по моему не работает.
CyRax
Тебе удалить или пометить?

Мне именно удалить записи.
обрежь файл под описателем полей и будет тебе пустая база

Енто как?
Это тебе "Если ничего не помогло..."

Попробовал и что-же... Заработало!!! Слава Всевышнему! :) Грубый способ оно конечно лучше SQL-я :) От лица заслуженного дружинника поволжья(тобишь меня), товарищу CyRax объявляется благодарность! :)

Ответить

Номер ответа: 28
Автор ответа:
 CyRax



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #28
Добавлено: 20.10.05 05:31
Грубый способ оно конечно лучше SQL-я :)

 Ты ещё скажи "варварский" :)
 По гордиев узел слыхал? Ну так я тебе его разрубил.

Ответить

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

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



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