Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 30.08.2012, 15:19
Andrej-zhe Andrej-zhe вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Вот еще когда открываешь через 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  
Старый 30.08.2012, 16:10
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

может и намудрил ... мне ж не видно что там написано и где ругается
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #18  
Старый 30.08.2012, 16:18
Andrej-zhe Andrej-zhe вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Код:
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  
Старый 30.08.2012, 16:41
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
var tblSbor: TTable; - может тут.
однозначно ... переменную то обьявил, а вот сам tblSbor не создал ... или создай его в дизайн-тайме или вручную кодом до того как будешь использовать
для простоты лучше создать его самому в дизайне - переименовать соотв - указать с каким файлом работать (Sbor.dbf), ну и драйвер
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 30.08.2012 в 16:44.
Ответить с цитированием
  #20  
Старый 30.08.2012, 17:14
Andrej-zhe Andrej-zhe вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Пока ищу как это сделать, но раб. день закончен, продолжу завтра спасибо что помогаете, надеюсь разобраться постепенно с БД.
Ответить с цитированием
  #21  
Старый 31.08.2012, 11:22
Andrej-zhe Andrej-zhe вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Создал отдельно файлик 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  
Старый 31.08.2012, 13:23
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

слушай, ну зачем тАкие сложности?
1. создай в DatabaseDesktop свой файлик с нужными полями
2. в дельфе на панели компонентов ткни вкладку BDE - выбери ком-т Table и положи на форму ... переименуй и заполни нужные свойства ... ткни Open для проверки открытия своей таблицы.
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #23  
Старый 31.08.2012, 14:40
Andrej-zhe Andrej-zhe вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Да все спс открывает с нужными полями, но вот такая ошибка теперь.
и ругается он на этой строке:
Код:
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  
Старый 31.08.2012, 15:21
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

показывай проэкт
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #25  
Старый 31.08.2012, 15:46
Andrej-zhe Andrej-zhe вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Код:
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  
Старый 31.08.2012, 17:10
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Andrej-zhe
Да все спс открывает с нужными полями, но вот такая ошибка теперь.
и ругается он на этой строке:
Код:
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".
Как я понимаю операция || означает в BDE конкатенацию двух строковых полей. Скорее всего одно из полей (например d.type) не является строковым поэтому и появляется ошибка "Type mismatch in expression", что в переводе с английского: "Несоответствие типа в выражении"
Цитата:
Сообщение от Andrej-zhe
и через Open не открываются почему то файлы oper_ozo.dbf и mklh.dbf, но когда их открываешь с диска d все нормально открываютя, перетащил их в папку с .ехе не открываются
А почему в Open у тебя используется ADO, вместо BDE который используется выше в Button1Click?

Хм... У меня кстати нету даже провайдера такого (VFPOLEDB.1)...
Ответить с цитированием
  #27  
Старый 31.08.2012, 17:28
Andrej-zhe Andrej-zhe вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Уточню вопрос с полями и отпишусь в понедельник утром. Всем спс что не бросаете нуба.
Ответить с цитированием
  #28  
Старый 03.09.2012, 09:56
Andrej-zhe Andrej-zhe вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Уточнил поля type subtype и kod нумерики. Значит типы полей одинаковые, тогда ругается по др причине получается.
Ответить с цитированием
  #29  
Старый 03.09.2012, 09:58
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Andrej-zhe
Уточнил поля type subtype и kod нумерики. Значит типы полей одинаковые, тогда ругается по др причине получается.
Типы "нумерики", а "конкатенировать" можно только строки, значит ругается по этой причине.
Ответить с цитированием
  #30  
Старый 03.09.2012, 10:04
Andrej-zhe Andrej-zhe вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Спасибо, а можно как то сравнивать "нумерики" для дальнейшего использования их в том алгоритме что у меня, или надо переводить их в строки?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter