Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2007, 17:17   #1
nataly_ukr
Пользователь
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию Создание индексного файла в программе

Необходимо просто проиндексировать файл при выполнении программы и показать его DBGrid

imjm:='otcet'+rmes2+'.dbf';
imjmi:='otcet'+rmes2+'.mdx';
Form24.Table1.Active:=False;
Form24.Table1.TableName:=imjm;
Form24.Table1.Close;
If FileExists(imjmi) then DeleteFile(imjmi);
AssignFile(F,imjm);
Reset(F);
Seek(F, 28);
value:=0;
Write(F,value);
CloseFile(F);
Form24.Table1.AddIndex('ddok','ddok ',[ixExpression]);
Form24.Table1.IndexName:='ddok';
Form24.Table1.Active:=True;

Посде выполнения индесн файл. судя по дате. обновляется Но в DBGrid записи не упорядочены В компонентах на форме не ставила никаких параметров, только связала Table . Source DBGrid
. Очень прошу помочь
nataly_ukr вне форума Ответить с цитированием
Старый 21.08.2007, 19:50   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Сейчас проверил вот этот код... работает...
Код:
var bActive, bExclusive: Boolean;
begin
   bActive := Table1.Active;
   bExclusive := Table1.Exclusive;
   Table1.IndexDefs.Update;
   with Table1 do
   begin
      Close;
      Exclusive := TRUE;
      Open;
      if Table1.IndexDefs.IndexOf('Predp') <> 0 then
         Table1.AddIndex('Predp', 'Predp', []);
      Close;
      Table1.IndexName := 'Predp';
      Exclusive := bExclusive;
      Active := bActive;
   end;
В дизайн-тайме таблица должна быть закрыта

Последний раз редактировалось _SERGEYX_; 21.08.2007 в 19:54.
_SERGEYX_ вне форума Ответить с цитированием
Старый 22.08.2007, 12:19   #3
nataly_ukr
Пользователь
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

Попробовала - один раз проскочило ,
, при повторном запуске выдает ошибку
nataly_ukr вне форума Ответить с цитированием
Старый 22.08.2007, 12:23   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вообще то индексы создаются раз и навсегда, и при повторном запуске их нужно уже открывать, а не создавать
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.08.2007, 13:06   #5
nataly_ukr
Пользователь
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

Stilet, а мы с тобой из одного города Дааа мир тесен Я Делфи начала заниматься совсем недавно, поэтому вопросы могут быть и глупые Так что извините Индексный файл создается Но когда смотришь по DBgrid . показывает не индексированные записи Я уже замучилась эксперементировать Может у меня порядок активизации файлов не такой
nataly_ukr вне форума Ответить с цитированием
Старый 22.08.2007, 13:19   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты тоже из крамахи? прикольно ) Можем пообщаться.
Ты саздавай Индекс один раз, потом только его открывай.
Чем пользуешся, Парадоксом?

P.S. Если что у меня Скайп есть, можеш туда стучать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.08.2007, 13:21   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

О пардон у тебя DBF - Тогда точно создай индекс один раз, а он уже сам потом должен жить и работать. Только открывай его и все.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.08.2007, 13:36   #8
nataly_ukr
Пользователь
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

Так у меня же стоит проверка - если его нет то я создаю А так только имя подключаю Я уже самое элементарное делаю - бросаю на форму три компонента Table, Source и DbGrid В Тable указываю только имя таблицы Но индексное имя не указываю Подключаю обработку индексного файла при активизации формы и потом хочу увидеть на экране отсортированные данные Но увы - данные не упорядочены Может ты смоделруешь у себя такую ситуацию Файл dbf
nataly_ukr вне форума Ответить с цитированием
Старый 22.08.2007, 14:05   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Наташа, я смоделировал вот такой код (Если интересно) :

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids;

type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Table1: TTable;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.FieldDefs.Add('q',ftString,1 0);
Table1.TableName:='qw';
Table1.CreateTable;
Table1.AddIndex('qind','q',[]);
Table1.Exclusive:=true;
Table1.Active:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.DatabaseName:=ExtractFilePat h(ParamStr(0));
Table1.TableName:='qw';
Table1.Active:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Table1.IndexName:='qind';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Table1.Append;
Table1.FieldByName('q').AsString:=i nttostr(random(1000));

end;

end.


У меня упорядочеваются без проблем. Ты скажи какого типа данные?
И вообще какая задача в целом... может подход нужен другой, ато твой пост первый чистое хакерство 8)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.08.2007, 14:29   #10
nataly_ukr
Пользователь
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

Я пишу программы для бухгалтерии Там установленны были программы под Dos Теперь мне все это нужно сделать на Delphi А там для просмотра данных нужно упорядочить по дате или по N документа Вот я и хочу показать массив , созданній ранее в другом шаге программы , но только упорядочить его по дате Формат D(8) Может его нужно перевести в String Я тебе так благодарна , что хоть ты откликнулся |А то редко кто работает с Базами А ты на чем пишешь программы или ты сайтами занимаешься
nataly_ukr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание файла базы Черничный БД в Delphi 19 05.12.2008 10:26
Создание файла Nowise Паскаль, Turbo Pascal, PascalABC.NET 7 04.04.2008 19:55
Создание файла BigRem Общие вопросы Delphi 8 06.01.2008 16:52
Создание файла Хs-You Общие вопросы Delphi 4 22.08.2007 22:04