Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
9-1144144001
антонио
2006-04-04 13:46
2007.02.18
[GLScene] Создание объекта


15-1170093978
tesseract
2007-01-29 21:06
2007.02.18
тест


15-1169032453
PZ
2007-01-17 14:14
2007.02.18
Призрак в актовом зале (?)


2-1170326809
sergeyst
2007-02-01 13:46
2007.02.18
Drag&amp;drop


15-1169821131
Vlad Oshin
2007-01-26 17:18
2007.02.18
Кстати, мою анкету кто-нибудь видит?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский