Страница: 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
Тагды так, 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:
dim cn As New Connection
dim rs
dim stmp as string
stmp=inputbox("data path:"
'например "c:\dbfdata"
cn.ConnectionString = "Provider=MSDataShapeata Provider=MSDASQL.1;User ID="""";Extended Properties=""
river={Microsoft Visual FoxPro Driver};UID=;PWD=;SourceDB=" & db & ";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes
eleted=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="SN=Файлы dBASE
BQ=C:\DOWNLOADS\DATABASE
efaultDir=C:\DOWNLOADS\DATABASE
riverId=533;MaxBufferSize=2048;PageTimeout=5;
Или поставь на форму Data1. Там уж наверно разберешься?
Номер ответа: 25
Автор ответа: CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #25
Добавлено: 19.10.05 05:54
Тебе удалить или пометить? Если удалить так обрежь файл под описателем полей и будет тебе пустая база. Пометить на удаление тоже не беда кстати.
Номер ответа: 26
Автор ответа: CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #26
Добавлено: 19.10.05 07:06
Это тебе "Если ничего не помогло..."
FieldName(10) As Byte
FieldType As Byte
FieldAddr As Long
FieldLen As Byte
 ecimalLen As Byte
Reserved1 As Integer
WorkID As Byte
Reserved2 As Integer
SET_FIELDS As Byte
Reserved4(6) As Byte
 base4MDX 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
 bfInfo.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=..." не нашел.
Привожу цитату из первого моего поста:
Удаляем с помощью DATA, все проходит нормально и файл оказывается пустым, но размер файла при таком удалении записей остается неизменным, что не есть хорошо.
В последующем стало ясно, что удаление с помощью ДАТЫ не упаковывает базу, а упаковать dbf с помощью CompactDatabase не представляется возможным, оно с dbf по моему не работает.
CyRax
Мне именно удалить записи.
Енто как?
Попробовал и что-же... Заработало!!! Слава Всевышнему! Грубый способ оно конечно лучше SQL-я
От лица заслуженного дружинника поволжья(тобишь меня), товарищу CyRax объявляется благодарность!
Номер ответа: 28
Автор ответа: CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #28
Добавлено: 20.10.05 05:31
Ты ещё скажи "варварский"
По гордиев узел слыхал? Ну так я тебе его разрубил.