![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как переименовать поле в физической базе прогаммным путем? [D7, dBase, FoxPro]
SCORPION ZP © (2003-07-01 20:53:00)Есть таблица в формате dBASE. В неё программно добавляем поля,
причем новые могут совпадать по имени с уже существующими. И вот
очень желательно переименовать не новые поля, а старые -
совпадаюшие...
SCORPION ZP (2003-07-03 16:30:00) [1]гончий
Да действительно вопрос решен. Degisy forever!
SCORPION ZP (2003-07-03 12:31:00) [2]Удалено модератором
Примечание: Личная переписка
гончий (2003-07-03 11:18:00) [3]Удалено модератором
Примечание: Личная переписка
SCORPION ZP (2003-07-03 10:19:00) [4]Удалено модератором
Примечание: Личная переписка
гончий (2003-07-03 09:19:00) [5]Тодбко что проверил работу TRenameFields на таблице Clients.dbf из DemoData Delphi - все работает великолепно и данные на месте :)
гончий (2003-07-03 08:56:00) [6]Удалено модератором
Примечание: Личная переписка
SCORPION ZP (2003-07-02 21:07:00) [7]Serginio
Спасибо за ссылки!
SCORPION ZP (2003-07-02 20:42:00) [8]гончий
Скажи, что за ботва??? TRenameFields действительно переименовывает поля, но зачем скажи все записи в полях перемешивать. Все смешалось и люди и кони. А я ведь размерность полей не меняю и типы полей не меняю!
SCORPION ZP (2003-07-02 17:14:00) [9]гончий
Спасибо!!! Всё подробно описал. Как только освободится машина - попробую. Только алиас, имя таблицы и имена полей я буду задавать программно, но это сути не меняет.
SCORPION ZP (2003-07-02 17:01:00) [10]
> не понимаю правда как это с переименовкой полей у тебя связано
> и чем переименовко в этом случае поможет/нужна
1.Переименование полей - это ещё одна задача для решения. А задачи мне ставит шеф и зачем это ему понадобилось только он и знает...
> а то немного нестандартное представление и уже тебя в тупик
> ставит.
2.Не суди и не судим будешь... Раскалоли! Я работаю админом в игровом клубе, а в нагрузку вот с базами это ...
sniknik (2003-07-02 15:48:00) [11]SCORPION ZP © (02.07.03 15:03)
> 2.Даже, если сторонними продуктами мне удастся просмотреть (очень бы хотелось) записи, то все равно мне же это не даст возможности с ними работать. Все одно нужна расшифровка.
какая расшифровка??? ты даже не знаеш что оно зашифровано а уже расшифровывать собрался. то что там число вместо текста ... ну и что?
читать можно приблизительно так (не проверял на работоспособность, совсем)
type
TMyCurr = packed record {поля по 16байт, в середине пусто + деньги упоминались, воэможно это 2 ->}
Val1: Currency;
Val2: Currency;
end;
pRecBuf: Pointer;
MyCurr: TMyCurr;
Blank: LongBool;
begin
Blank:= false;
pRecBuf := AllocMem(16);
DbiGetField(Table1.Handle, 2, pRecBuf, @MyCurr, Blank);
FreeMem(pRecBuf, 16)
if MyCurr = 0 then не получилось или пустое поле
почитал бы чего по внутренностям компов, про память, форматы/типы данных ... ets
а то немного нестандартное представление и уже тебя в тупик ставит.
попробуй сделать файл типа рекорд с цифрой внутри (разного типа по очереди), записывай по одной записи с ненулевыми значениями(лутше с числом из программы которая с этим файлом работает) в этой цифре и сравнивай получившееся с твоими полями в редакторе (NC Dos).
найдеш похожее можно будет дальше двигатся.
p.s. не понимаю правда как это с переименовкой полей у тебя связано и чем переименовко в этом случае поможет/нужна?.
гончий (2003-07-02 15:31:00) [12]Там все просто (читай файлы *.txt):
{--------------------------------------------------------------
TRenameFields компонент
--------------------------------------------------------------}
1. Перетащить компонент на главную форму Вашего приложения.
2. Установить свойство DatabaseName и TableName таким образом,
чтобы оно указывало на таблицу в которой необходимо изменить
названия полей.
3. В свойстве Mappings необходимо перечислить поля, которые
необходимо переименовать, например:
property Mappings:
(
NAME=AnimalName
SIZE=AnimalSize
WEIGHT=AnimalWeight
BMP=AnimalBmp
)
где, слева от знака равенства находится старое имя поля, а справа новое.
4. Вызвать функцию Execute компонента, которая в случае успешного переименования
вернет значение True. Также можно вызвать эту функцию и в Design-time режиме,
нажав правой клавишей мыши на компоненте и выбрав пункт меню "Execute...".
-----------
Удачи!
SCORPION ZP (2003-07-02 15:16:00) [13]гончий
Я пока не разобрася как там работает DegisyDb в плане переименовывания полей. Как сделаю или возникнут проблемы - сообщу тебе.
Serginio (2003-07-02 15:16:00) [14]http://alyunov.narod.ru/files/dBase.htm
http://www.e-bachmann.dk/docs/xbase.htm
http://www.codenet.ru/progr/formt/intro.php
http://articlesd.h1.ru/docum/dbfall.php
SCORPION ZP (2003-07-02 15:03:00) [15]sniknik
1.Да я понимаю, что открыть и посмотреть записи можно через
текстовый редактор. Два раза(или три) мне можешь не повторять...
Там в каждой ячейке по два числа(наверное по 3-4 цифры судя по тем нечитаемым символам). Так моей задачей является разбиение
каждого поля пополам: одно число в одну таблицу, а другое - в
другую. Только вот преобразовать строку с такими символами
в чило - просто не представляю как.
2.Даже, если сторонними продуктами мне удастся просмотреть (очень бы хотелось) записи, то все равно мне же это не даст
возможности с ними работать. Все одно нужна расшифровка.
sniknik (2003-07-02 13:24:00) [16]> А как? sniknik смотри ящик.
у тебя там просто, в текстовые поля цифры занесены в битовом формате (хотя может это не цифры а шифровка) и похоже по 2 цифры в поле судя по разрыву между значимыми (но может так копейки отдельно хранятся), факт в том что в начале поля стоят символы #0 которые есть признак конца поля в PChar (а так как оно участвует в преобразовании....).
(по моему уже обсуждалось, не я точно уже раза три подобное обьяснял, но тот случай именно с тобой)
можно прочитать
1 текстовым редактором,
2 сторонними компонентами,
3 BDE DbiGetField/Record (это как раз там подсказали в том случае).
но в любом придется самому искать алгоритм по которому это поле формировали, и также его читать.
гончий (2003-07-02 13:10:00) [17]Странная ошибка..сейчас вышлю этот файл
SCORPION ZP (2003-07-02 13:04:00) [18]Оговорился действительно я скачал DegisyData...
SCORPION ZP (2003-07-02 13:01:00) [19]гончий
Установил всю библиотеку DegisyDb. Но при компиляции примера
выдает, что не может найти "DsDbUtils.pas". Вообщем всех модулей pas из dpk нигде нет. Панель "Degisy Data" в Delphi появилась...
гончий (2003-07-02 12:51:00) [20]Не DegisyData! а DegisyDb!!!
http://www.degisy.com/download.php?lang=rus