Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
ВнизDBF и структура файла Найти похожие ветки
← →
Максименко (2007-02-02 09:27) [0]Мастера добрый день! Помогите пожалуйста, очень надо. Мне необходимо поменять структуру DBF файла программно. А именно мне нужно, у всех полей типа Character длинну поля сделать 60, поголовно.....Очень на вас надеюсь, заранее благодарю.
← →
Elen © (2007-02-02 09:30) [1]
> Мне необходимо поменять структуру DBF файла программно
команда SQL Alter Table
Если не ошибаюсь кажись что-то в этом роде :ALTER TABLE customer ALTER COLUMN cust_id c(Кол-во символов)
← →
Elen © (2007-02-02 09:33) [2]
> Мне необходимо поменять структуру DBF файла программно
Извини за нескромный вопрос, а фаилов которые надо менять много? И как часто ты собираешся менять их?
← →
Максименко (2007-02-02 09:44) [3]Да, их много. Мне на один раз. Не хотелось бы каждую через FoxPro открывать и каждое поле менять в ручную. :(
с SQL-ом в Дельфи плохо лажу, попробывал через Query использовать данный запрос, ошибка выходит на "ALTER" :(
← →
Elen © (2007-02-02 10:10) [4]
> Не хотелось бы каждую через FoxPro открывать и каждое поле
> менять в ручную
На твоем бы месте я бы прогу на FoxPro написала типа Use таблица Alter Table... И пусть фокс сам меняет, в делфе с ДБФ работать немного проблемно...
← →
Максименко (2007-02-02 10:32) [5]Спасибо!
← →
Плохиш © (2007-02-02 10:47) [6]
> в делфе с ДБФ работать немного проблемно
Обалдеть, чего только здесь не узнаешь.
← →
Elen © (2007-02-02 10:49) [7]
> Плохиш
Это сугубо личное мнение. Если знаеш другие способы предложи, а не упрекай.
← →
Плохиш © (2007-02-02 10:53) [8]
> Elen © (02.02.07 10:49) [7]
> Если знаеш другие способы предложи
Другие способы чего? Применитепьно к фразе "в делфе с ДБФ работать немного проблемно".
← →
Elen © (2007-02-02 10:54) [9]
> Плохиш
Применительно к "Мне необходимо поменять структуру DBF файла программно. А именно мне нужно, у всех полей типа Character длинну поля сделать 60"
← →
Плохиш © (2007-02-02 10:55) [10]
> Elen © (02.02.07 10:49) [7]
Кстати, чтобы ответить на вопрос "попробывал через Query использовать данный запрос, ошибка выходит на "ALTER"", надо включать телепатор, а мне лень :-P
← →
Плохиш © (2007-02-02 10:56) [11]
> Elen © (02.02.07 10:54) [9]
Зачем я буду повторять твой же ответ из [1]? :-)
← →
Elen © (2007-02-02 10:57) [12]Удалено модератором
Примечание: Создание пустых сообщений
← →
vtur © (2007-02-02 13:06) [13]Очень просто, если знаешь структуру файла
type TDBFHdStruct = record
Tdbf:string[7];
Hz:SmallInt;
Pr:array [0..21] of char;
end;
type TDBFFdStruct = record
Name:array [0..10] of char;
Tp:char;
Off:Integer;
Pr:array [0..15] of char;
end;
procedure TDmProplata.ModHeadDBF;
var HeadDbf:TDBFHdStruct;
HeadFd:TDbfFdStruct;
HFileDbf: file of Byte;
k,i,lf:Integer;
begin
k:=SizeOf(TDBFHdStruct);
AssignFile(HFileDbf,DBImport);
Reset(HFileDbf);
BlockRead(HFileDbf, HeadDbf, k);
k:=(HeadDbf.Hz - 1) div 32;
lf:=SizeOf(TDBFFdStruct);
i:=1;
while i<k do begin
BlockRead(HFileDbf, HeadFd, lf);
if(HeadFd.Tp="N")then begin
HeadFd.Tp:="C";
end;
HeadFd.Off:=0;
HeadFd.pr[0]:=60;//длина поля в байтах
Seek(HFileDbf, i*lf);
BlockWrite(HFileDbf, HeadFd, lf);
i:=i+1;
end;
CloseFile(HFileDbf);
end;
← →
Elen © (2007-02-02 13:10) [14]
> Очень просто, если знаешь структуру файла
Ага. И версию заголовка таблицы твоя прога учитывает...
← →
Elen © (2007-02-02 13:13) [15]
> vtur
И кстати на Фоксе аналогичная прога будет содержать как минимум 5 строк против твоих несколько большего количества и будет надежнее. И кстати ничего не мешает выполнить фоксовские проги из делфи через, например, ADO. Это легко и приятно :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.05 c