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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2011, 17:42   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно без ADOConnection. Настройте ConnectionString. У меня сейчас дома мало что установлено, поэтому подсказывать тяжело. Попробуйте через провайдер для ODBC, для этого и ODBC нужно настроить. Если не получится - ждите до понедельника, с работы мне легче будет вам чем-то помочь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.05.2011, 18:05   #12
Art111000
 
Регистрация: 24.11.2009
Сообщений: 9
По умолчанию

Код:
  opendialog1.Execute;
  dir:=opendialog1.FileName;
  For i:=1 to length(dir) do
    if dir[i]='\' then j:=i;
  FileName:=copy(dir,j+1,length(dir)-j);
  dir:=copy(dir,1,j);
  DataSource1.DataSet:=Query1;
  DBGrid1.DataSource:=DataSource1;
  query1.Close;
  query1.SQL.Clear;
  query1.SQL.Add('Select * from '+filename);
  query1.open;
  for i:=0 to query1.FieldCount-1 do
    ListBox1.Items.Add(query1.Fields[i].FieldName);
Ругается когда запрос открывает, не знаю что с ним еще сделать можно (работаю с BDE).
Art111000 вне форума Ответить с цитированием
Старый 16.05.2011, 02:33   #13
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Код:
  
  if Opendialog1.Execute then begin
    dir := OpenDialog1.FileName;
  //  For i:=1 to length(dir) do
  //      if dir[i]='\' then j:=i;
    FileName := ExtractFileName(dir) ; // <- про ExtractFileName() видно не слышали )
    dir := ExtractFileDir(dir) + '\' ; // <- аналогично ExtractFileDir() в конце добавляем \
    DataSource1.DataSet := Query1 ;
    DBGrid1.DataSource := DataSource1 ;
    SetCurrentDir(Dir);  // <- Изменяет текущую директорию
    Query1.Close ;
    Query1.SQL.Clear ;
    Query1.SQL.Add('SELECT * FROM ' + FileName ) ;
    Query1.Open ;
    for i := 0 to Query1.FieldCount - 1 do
        ListBox1.Items.Add(Query1.Fields[i].FieldName) ;
  end ;

Последний раз редактировалось Gulik; 16.05.2011 в 09:41.
Gulik вне форума Ответить с цитированием
Старый 16.05.2011, 11:50   #14
Art111000
 
Регистрация: 24.11.2009
Сообщений: 9
По умолчанию

Gulik, не спасло...
P.S. Я думал текущая директория и так остается та, в которой лежит DBF-файл. OpenDialog её меняет вроде.
Art111000 вне форума Ответить с цитированием
Старый 16.05.2011, 13:12   #15
Art111000
 
Регистрация: 24.11.2009
Сообщений: 9
По умолчанию

Та самая часть программы. Может кто-нибудь сможет помочь?)

Последний раз редактировалось Art111000; 16.05.2011 в 13:15.
Art111000 вне форума Ответить с цитированием
Старый 16.05.2011, 13:24   #16
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Тогда копируй DBF файл в директорию с прогой...

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    OpenButton: TButton;
    OpenDialog1: TOpenDialog;
    Query1: TQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ListBox1: TListBox;
    SaveButton: TButton;
    DBNavigator1: TDBNavigator;
    procedure OpenButtonClick(Sender: TObject);
    procedure SaveButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  SDir : String ;

implementation

{$R *.dfm}

procedure FileCopy(Const SourceFileName, TargetFileName: String);
   var
   A, F : TFileStream;
begin 
   A := TFileStream.Create(sourcefilename, fmOpenRead );
   try
      F := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
      try
         F.CopyFrom(A, A.Size ) ;
         FileSetDate(F.Handle, FileGetDate(A.Handle));
      finally
         F.Free;
      end;
   finally
      A.Free;
   end; 
end;

procedure TForm1.OpenButtonClick(Sender: TObject);
   var
      FileName : String ;
      i : integer ;
begin
   if Query1.Active then begin
      Query1.Close ;
      if FileExists(SDir + '\' + ExtractFileName(OpenDialog1.FileName)) then
         DeleteFile(SDir + '\' + ExtractFileName(OpenDialog1.FileName)) ;
   end ;
   if Opendialog1.Execute then begin
      FileName := ExtractFileName(OpenDialog1.FileName) ;
      if FileExists(SDir + '\' + FileName) then
         DeleteFile(SDir + '\' + FileName) ;
      FileCopy(OpenDialog1.FileName, SDir + '\' + FileName) ;
      SetCurrentDir(SDir) ;
      Query1.Close ;
      Query1.SQL.Clear ;
      Query1.SQL.Add('SELECT * FROM ' + FileName ) ;
      Query1.Open ;
      for i := 0 to Query1.FieldCount - 1 do
          ListBox1.Items.Add(Query1.Fields[i].FieldName) ;
   end ;
end;

procedure TForm1.SaveButtonClick(Sender: TObject);
begin
   if FileExists(OpenDialog1.FileName) then
      DeleteFile(OpenDialog1.FileName) ;
   FileCopy(SDir + '\' + ExtractFileName(OpenDialog1.FileName), OpenDialog1.FileName) ;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   GetDir(0, SDir) ;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   if Query1.Active then begin
      Query1.Close ;
      if FileExists(SDir + '\' + ExtractFileName(OpenDialog1.FileName)) then
         DeleteFile(SDir + '\' + ExtractFileName(OpenDialog1.FileName)) ;
   end ;
end;

end.
На основании новой идеи поправил твой проект Скачать

Последний раз редактировалось Gulik; 16.05.2011 в 13:35.
Gulik вне форума Ответить с цитированием
Старый 16.05.2011, 14:15   #17
Art111000
 
Регистрация: 24.11.2009
Сообщений: 9
По умолчанию

И так тоже ругается... В меня уже закрадываются сомнения по поводу DBF-файлов, а не программы :D
Хотя акцессом DBF'ка открывается нормально...
Art111000 вне форума Ответить с цитированием
Старый 16.05.2011, 14:21   #18
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

FoxPro говорит что это не таблица

Последний раз редактировалось Gulik; 16.05.2011 в 14:51.
Gulik вне форума Ответить с цитированием
Старый 16.05.2011, 15:01   #19
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

TADOConnection, докачал драйвер
Цитата:
Microsoft Visual FoxPro Driver VFPODBC.DLL 07.12.1999
Бросил Ваш файл в папку "G:\MySource\TOVAR.DBF", создал DSN, вроде этого:
Цитата:
DSN=TestFOXPRO;UID=;PWD=;SourceDB=g :\MySource;SourceType=DBF;Exclusive =No;BackgroundFetch=Yes;Collate=Mac hine;Null=Yes;Deleted=Yes;
всё нормально открывается, все поля доступны
ReportCube вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами dbf в Delphi. santaIsAbsent БД в Delphi 10 02.09.2010 10:16
БД dbf + Delphi (оплата сразу) netruxa Фриланс 5 21.04.2010 10:08
Из 1С 8.1 перегрузить данные в базу на Delphi (база dbf). Natasha Pavlovskay Помощь студентам 0 17.07.2009 20:45
из dbf в mssql через delphi kyc0k БД в Delphi 1 22.12.2008 15:25
сохранение результата выборки из DBF файла в DBF файл с такой же структурой таблицы GazimagomedovM БД в Delphi 5 06.11.2007 17:58