Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
21 / 21 / 3
Регистрация: 09.01.2012
Сообщений: 162
1

DBF - поменять местами столбцы

15.01.2012, 04:48. Показов 6396. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как можно поменять столбцы местами TTable, DBF
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2012, 04:48
Ответы с готовыми решениями:

Найти столбцы максимального элемента и поменять местами столбцы
В массиве целых чисел найти индекс столбца максимального элемента. Требуется поменять местами...

В двумерном массиве поменять местами k и l столбцы местами.
В двумерном массиве поменять местами k и l столбцы местами.

Поменять местами столбцы
Поменять местами m и n столбцы матрицы. Значения m и n вводится с экрана (m<n). Эл-ты вводятся с...

Поменять местами столбцы
Рандомом задается двумерный целочисленный массив, поменять местами столбцы с номерами 1 и 2, 3 и 4,...

31
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
17.01.2012, 11:35 21
Author24 — интернет-сервис помощи студентам
Delphi
1
Index я менял, столбцы менялись местами, вот теперь нужно сделать так чтобы он запомнил расположение индексов - Как это сделать?
Ежик кололся, но упрямо лез на кактус.
Почему нельзя создать требуемую пустую таблицу, которую можно реструктурировать, индексировать, солить и перчить как требует "нацяльныка" и в которую ежемесячно (квартально, полугодно...) ПРОСТЫМ ЗАПРОСОМ (без всяких бубнов типа TTable) заливать данные из рабочей таблицы. Только не говорите что "нацяльныка" у Вас за спиной стоит и вообще каждый Ваш чих и пук записывается КГБ.
Просто Вы как тот студент из анекдота - будете упорно трясти грушу не обращая на валяющиеся вокруг палки и камни

Добавлено через 6 минут
И еще мне просто интересно каким образом руководство требует у Вас нужный ему ФИЗИЧЕСКИЙ ПОРЯДОК полей в таблице ? Точнее как оно видит что этот порядок не тот ?
Вот 100 к одному, что Вы не понимаете разницы между ХРАНЕНИЕМ, ПРЕДСТАВЛЕНИЕМ и ОТОБРАЖЕНИЕМ информации базы данных. Возможно вследствие "верного курса" на "всесильный, а потому вечный" TTable.
Поэтому и кактус Вам всегда будет казаться ежихой только потому что у него тоже есть колючки
0
7 / 7 / 1
Регистрация: 25.11.2011
Сообщений: 40
17.01.2012, 11:57 22
Я ему это предлагал: создай пустую структуру с требуемым физическим порядком расположения полей, да и залей туда свои данные построчно. Говорит - это для него не вариант.
0
21 / 21 / 3
Регистрация: 09.01.2012
Сообщений: 162
18.01.2012, 04:13  [ТС] 23
Я говорю что это самый длинный вариант, поэтому не вариант. А так спасибо всем за разъяснение.

Кстати говоря Африканыч ты немного прав. Моя организация использует XML и DBF одновременно. Одним файлом отправляем одно, другим другое.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
18.01.2012, 10:29 24
Цитата Сообщение от DrDragoN Посмотреть сообщение
Моя организация использует XML и DBF одновременно
Ну, и что из этого следует. Всегда можно и нужно организовать работу так, чтобы парсер знач что и откуда брать и куда класть.
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
18.01.2012, 11:45 25
Delphi
1
Моя организация использует XML и DBF одновременно. Одним файлом отправляем одно, другим другое
Читаем внимательно [16]. Вникаем. Просветляемся. Делаем быстро, качественно, используя имеющиеся в Delphi "заточенные" компоненты.

ЗЫ. Поймите простую вещь - Вам советуют люди, которое подобное делали десятки, если не сотни раз.
0
2 / 2 / 2
Регистрация: 11.07.2013
Сообщений: 55
29.08.2013, 15:48 26
у меня несколько схожая задача: Мне нужно немного изменить структуру DBF, выпилив из нее ненужные столбцы. В голову пришла идея делать это вышепредложенным способом. Создать пустой DBF с нужной структурой, из старого DBF получить эти поля SQL запросом и встатвить эти поля в новый DBF.
Так как это мой первый опыт работы с DBF да еще и под Delphi, все, что мне удалось пока сделать, это выдернуть нужные столбцы из исходного файла, вставить их в новый файл пока не получается.
Использовал компонент ADODB, устанавливал отдельно VFPOLEDB, так что ConnectionString выглядит так:
Delphi
1
2
ConnectionString:= 'Provider=VFPOLEDB.1;Data Source='+ ExtractFileDir(DBFpath)
       +';Mode=Share Deny None;Extended Properties="";User ID="";Password="";Mask Password=False;Cache Authentication=False;Encrypt Password=False;Collating Sequence=RUSSIAN;DSN=""';

собственно код выглядит так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
with DBFQuery do
  begin
    Close;
    Connection:= cnDBF;
    SQL.Clear;
    SQL.Add('SELECT UNICODE, NUMIP, DT, NUM, NUMRES, DTRES, RESULT, TEXT, FILENAME  FROM "1.dbf"');
    Open;
 
    while not Eof do begin
 
 
      Unicode := FieldByName('UNICODE').asstring;
      Numisp := FieldByName('NUMIP').asstring;
      Dt := FieldByName('DT').asstring;
      Num := FieldByName('NUM').asstring;
      Numres := FieldByName('NUMRES').asstring;
      Dtres := FieldByName('DTRES').asstring;
      Result := FieldByName('RESULT').asstring;
      Text := FieldByName('TEXT').asstring;
      Filename := FieldByName('FILENAME').asstring;
     
      SQL.add('INSERT INTO "1new.dbf" (UNICODE)');
      SQL.Add('VALUES ('''+Unicode+''')'); //пытаюсь хотя бы одно поле вставить для проверки работоспособности
      EXecSQL;
      Next;
    end;
Спотыкается на Next, можете подсказать, что я делаю не так?
0
21 / 21 / 3
Регистрация: 09.01.2012
Сообщений: 162
30.08.2013, 03:53  [ТС] 27
Меня научили тут делать так:

Создать таблицу куда будем вносить данные, беру за основу твои данные (UNICODE, NUMIP, DT, NUM, NUMRES, DTRES, RESULT, TEXT, FILENAME):
Delphi
1
2
3
4
5
6
      with DBFQuery do
      begin
        SQL.Clear;
        SQL.Add( 'CREATE TABLE "1.dbf" ( NUM DECIMAL(10, 0), UNICODE CHAR(250), NUMIP CHAR(250), NUMRES CHAR(250), DTRES CHAR(250), RESULT CHAR(250), `TEXT` CHAR(250), FILENAME CHAR(250) ) ' );
        ExecSQL;
      end;
Далее указываем ниже что мы хотим скопировать все строки по определенному условию:
Delphi
1
2
3
4
5
6
        with Q1 do
        begin
          SQL.Clear;
          SQL.Add( 'INSERT INTO "1.dbf" ( UNICODE, NUMIP, DT, NUM, NUMRES, DTRES, RESULT, TEXT, FILENAME ) SELECT UNICODE, NUMIP, DT, NUM, NUMRES, DTRES, RESULT, TEXT, FILENAME FROM "2.dbf"' );
          ExecSQL;
        end;
Если сделать так как написал я, то все данные будут скопированы без изменений. Если ты хочешь скопировать только определенные столбцы - то укажи их в INSERT. Или тебе нужно будет внести данные в таблицу 1.dbf одно поле, "слепив" два столбца из таблицы 2.dbf то делать нужно так:
Delphi
1
          SQL.Add( 'INSERT INTO "1.dbf" ( FILENAME ) SELECT NUMIP + " " + NUM + " " + NUMRES FROM "2.dbf"' );
Здесь мы вставили три столбца, "слепив" их между собой пробелом, в один столбец FILENAME

Спасибо всем, что научили меня
1
2 / 2 / 2
Регистрация: 11.07.2013
Сообщений: 55
30.08.2013, 16:19 28
спасибо, что-то похожее на правду получилось. Правда в структуре почему то появляется доп поле _NullFlags и плюс не удается выставить кодировку, скопированная запись из DBF с кодировкой CP866 в созданную нами DBF представляет вид кракозябры.
Пробовал исправить это так:
Delphi
1
2
cnDBF.ConnectionString:= 'Provider=VFPOLEDB.1;Data Source='+ ExtractFileDir(DBFpath)
       +';Mode=Share Deny None;Extended Properties="";User ID="";Password="";Mask Password=False;Cache Authentication=False;Encrypt Password=False;Collating Sequence=RUSSIAN;CharSet=cp866;DSN=""';
Т.е. добавил запись CharSet=cp866;
программа отрабатывает, но ничего не меняется
и так:

Delphi
1
SQL.Add( 'CREATE TABLE "OUT\1.dbf" (UNICODE INT, NUMISP CHAR(40), DT CHAR(20), NUM CHAR(40), NUMRES CHAR(40), DTRES CHAR(20), RESULT INT, `TEXT` CHAR(250) CHARACTER SET cp866, FILENAME CHAR(30) ) ' );
ругается на синтаксис запроса
0
21 / 21 / 3
Регистрация: 09.01.2012
Сообщений: 162
31.08.2013, 04:10  [ТС] 29
Цитата Сообщение от makc9I Посмотреть сообщение
спасибо, что-то похожее на правду получилось.
Для этого есть кнопка - +1 Спасибо

Цитата Сообщение от makc9I Посмотреть сообщение
Правда в структуре почему то появляется доп поле _NullFlags
Это служебное поле

Цитата Сообщение от makc9I Посмотреть сообщение
не удается выставить кодировку
я использую BDE Administrator и там принудительно всем меняю кодировку
0
Эксперт Pascal/Delphi
1134 / 615 / 129
Регистрация: 13.02.2009
Сообщений: 3,553
31.08.2013, 13:08 30
Цитата Сообщение от DrDragoN Посмотреть сообщение
Как можно поменять столбцы местами TTable, DBF
Если установить Библиотека DevExpress и там есть cxGrid

1. Можно поменять столбцы местами
2. Можно фильтрация
3. Можно сортировка
4. Можно почитать итоговое сумма
Вложения
Тип файла: rar Video_Можно поменять столбцы местами.rar (1.16 Мб, 5 просмотров)
Тип файла: rar Video_Можно фильтрация.rar (1.72 Мб, 6 просмотров)
Тип файла: rar Video_Можно сортировка .rar (672.9 Кб, 3 просмотров)
0
Эксперт Pascal/Delphi
1134 / 615 / 129
Регистрация: 13.02.2009
Сообщений: 3,553
31.08.2013, 13:13 31
Цитата Сообщение от DrDragoN Посмотреть сообщение
Как можно поменять столбцы местами TTable, DBF
итоговое сумма .... и много другого
Вложения
Тип файла: rar Videoитоговое сумма .rar (763.5 Кб, 3 просмотров)
0
Эксперт Pascal/Delphi
1134 / 615 / 129
Регистрация: 13.02.2009
Сообщений: 3,553
31.08.2013, 17:34 32
Цитата Сообщение от DrDragoN Посмотреть сообщение
Как можно поменять столбцы местами TTable, DBF
Можно напечатать данных с помощью компоненту dxComponentPrinter1 + экспорт PDF Все это облегчить нам жизнь
Вложения
Тип файла: rar Video_напечатать+PDF.rar (4.84 Мб, 11 просмотров)
1
31.08.2013, 17:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.08.2013, 17:34
Помогаю со студенческими работами здесь

Поменять столбцы местами
Помогите пожалуйста :) Нужно поменять 1-ый и 2-ой столбец матрицы местами.

Поменять столбцы местами
Здравствуйте. Есть таблица с полями caption, id, priority, расположенные в том же порядке. мне...

Поменять местами k1 и k2 столбцы
Дан массив, состоящий из NХM элементов, значения которого вводится с клавиатуры. Поменять местами...

Поменять местами столбцы матрицы
Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru