![]() |
|
|
#16
|
|||
|
|||
|
Вот еще когда открываешь через OpenDialog файл например mklh.dbf из той же папки в которой сохранен проект то выдает вот такую ошибку
"Memo file c:\...mklh.fpt is missing or is invalid", а когда открываешь файл с диска d:\ все нормально файл открывается. И Юрий на ваш код ругается вот так "Type mismatch in exptession" что за несоответствие типа? может быть я с Query намудрил Последний раз редактировалось Andrej-zhe, 30.08.2012 в 15:34. |
|
#17
|
||||
|
||||
|
может и намудрил ... мне ж не видно что там написано и где ругается
|
|
#18
|
|||
|
|||
|
Код:
procedure TForm1.Button1Click(Sender: TObject);
var tblSbor: TTable; - может тут.
begin
Query1.Close;
Query1.SQL.Text:='SELECT d.kod, d.name, o.n FROM duh.dbf d, oper.dbf o, oper_ozo.dbf z WHERE d.type||d.subtype||d.kod = o.type||o.subtype||o.kod AND d.type||d.subtype||d.kod = z.type||z.subtype||z.kod';
Query1.Open;
if Query1.RecordCount>0
then
begin
tblSbor.Open;
while not Query1.Eof do
begin
tblSbor.Insert;
tblSbor.FieldByName('kod').Value:=Query1.FieldByName('kod').Value;
tblSbor.FieldByName('name').Value:=Query1.FieldByName('name').Value;
tblSbor.FieldByName('n').Value:=Query1.FieldByName('n').Value;
tblSbor.Post;
Query1.Next;
end;
end
else ShowMessage('Ни одной записи не найдено');
end;если можно напишите какие настройти надо компаненте ставить. Последний раз редактировалось Admin, 30.08.2012 в 17:20. |
|
#19
|
||||
|
||||
|
Цитата:
... или создай его в дизайн-тайме или вручную кодом до того как будешь использоватьдля простоты лучше создать его самому в дизайне - переименовать соотв - указать с каким файлом работать (Sbor.dbf), ну и драйвер ![]() Последний раз редактировалось Yurk@, 30.08.2012 в 16:44. |
|
#20
|
|||
|
|||
|
Пока ищу как это сделать, но раб. день закончен, продолжу завтра спасибо что помогаете, надеюсь разобраться постепенно с БД.
|
|
#21
|
|||
|
|||
|
Создал отдельно файлик sbor.dbf c нужными полями а как его теперь подключить чтобы записать туда то что нам надо.
прошу прощение за мое незнание( или делаю так const cTableSQL = 'CREATE DBF sbor CODEPAGE=1251 (nk C(4), fio C(40), date_ws D(8), dp D(8), dw D(8), name C (170))'; cCopyTable = 'execscript("COPY TO REALTABLE FOX2X")'; такой вопрос а С(4), это типы cgaracter с размерностью поля 4, a D(8) тип дата с размерностью 8 и т.д.? Последний раз редактировалось Andrej-zhe, 31.08.2012 в 11:56. |
|
#22
|
||||
|
||||
|
слушай, ну зачем тАкие сложности?
1. создай в DatabaseDesktop свой файлик с нужными полями 2. в дельфе на панели компонентов ткни вкладку BDE - выбери ком-т Table и положи на форму ... переименуй и заполни нужные свойства ... ткни Open для проверки открытия своей таблицы. |
|
#23
|
|||
|
|||
|
Да все спс открывает с нужными полями, но вот такая ошибка теперь.
и ругается он на этой строке: Код:
Query1.SQL.Text:='SELECT d.kod, d.name, o.n FROM duh.dbf d, oper.dbf o, oper_ozo.dbf z WHERE d.type||d.subtype||d.kod = o.type||o.subtype||o.kod AND d.type||d.subtype||d.kod = z.type||z.subtype||z.kod'; а ошибка "Type mismatch in exptession". и через Open не открываются почему то файлы oper_ozo.dbf и mklh.dbf, но когда их открываешь с диска d все нормально открываютя, перетащил их в папку с .ехе не открываются ![]() Последний раз редактировалось Andrej-zhe, 31.08.2012 в 15:05. |
|
#24
|
||||
|
||||
|
показывай проэкт
|
|
#25
|
|||
|
|||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids, Menus, ComCtrls,
DBTables;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
OpenDialog1: TOpenDialog;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Label1: TLabel;
Label2: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
Button1: TButton;
Query1: TQuery;
Table1: TTable;
procedure N1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var tblSbor: TTable;
begin
Query1.Close;
Query1.SQL.Text:='SELECT d.kod, d.name, o.n FROM duh.dbf d, oper.dbf o, oper_ozo.dbf z WHERE d.type||d.subtype||d.kod = o.type||o.subtype||o.kod AND d.type||d.subtype||d.kod = z.type||z.subtype||z.kod';
Query1.Open;
if Query1.RecordCount>0
then
begin
tblSbor.Open;
while not Query1.Eof do
begin
tblSbor.Insert;
tblSbor.FieldByName('kod').Value:=Query1.FieldByName('kod').Value;
tblSbor.FieldByName('name').Value:=Query1.FieldByName('name').Value;
tblSbor.FieldByName('n').Value:=Query1.FieldByName('n').Value;
tblSbor.Post;
Query1.Next;
end;
end
else ShowMessage('Ни одной записи не найдено');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName);
end;
procedure TForm1.N1Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
ADOConnection1.Close;
ADOConnection1.ConnectionString := Format('Provider=VFPOLEDB.1;Data Source=%s;'
+ 'Mode=ReadWrite;Extended Properties="";User ID="";Password="";'
+'Mask Password = False; '
+ 'Cache Authentication=False;Encrypt Password=False;'
+ 'Collating Sequence = RUSSIAN; DSN = ""',[ExtractFilePath(OpenDialog1.FileName)]);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(Format('select * from %s',
[ExtractFileName(OpenDialog1.FileName)]));
ADOQuery1.Active := True
end;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Close;
end;
end. |
|
#26
|
||||
|
||||
|
Цитата:
Цитата:
Хм... У меня кстати нету даже провайдера такого (VFPOLEDB.1)... |
|
#27
|
|||
|
|||
|
Уточню вопрос с полями и отпишусь в понедельник утром. Всем спс что не бросаете нуба.
|
|
#28
|
|||
|
|||
|
Уточнил поля type subtype и kod нумерики. Значит типы полей одинаковые, тогда ругается по др причине получается.
![]() |
|
#29
|
||||
|
||||
|
Цитата:
|
|
#30
|
|||
|
|||
|
Спасибо, а можно как то сравнивать "нумерики" для дальнейшего использования их в том алгоритме что у меня, или надо переводить их в строки?
|