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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2015, 12:24   #1
trojan218
Пользователь
 
Регистрация: 21.02.2015
Сообщений: 12
Смущение БД в делфи на основе Access

Delphi 7
на данный момент 2 вопроса:
1) нужно обеспечить целостность в Делфи для этого использую следующий код :
Цитата:
65 procedure TDataModule2.AuthorsBeforePost(Data Set: TDataSet);
66 begin
67 AuthorsCode_author.Value:= BooksCode_author.Value;
68 end;
69
70 procedure TDataModule2.Publishing_houseBefore Post(DataSet: TDataSet);
71 begin
72 Publising_houseCode_publish.Value:= BooksCode_publish.Value;
73 end;
74
75 procedure TDataModule2.BooksBeforePost(DataSe t: TDataSet);
76 begin
77 Publising_houseCode_publish.Value:= BooksCode_publish.Value;
78 end;
79
80 procedure TDataModule2.DeliveriesBeforePost(D ataSet: TDataSet);
81 begin
82 DeliveriesCode_delivery.Value:= PurchasesCode_delivery.Value;
83 end;
Возникают следующие ошибки:
[Error] Unit2.pas(72): Undeclared identifier: 'Publising_houseCode_publish'
[Error] Unit2.pas(72): Missing operator or semicolon
[Error] Unit2.pas(77): Undeclared identifier: 'Publising_houseCode_publish'
[Error] Unit2.pas(77): Missing operator or semicolon
[Error] Unit2.pas(82): Undeclared identifier: 'PurchasesCode_delivery'
[Error] Unit2.pas(82): Missing operator or semicolon
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit2.pas'.
82 и 67 строки написаны правильно, название таблиц взяты из задачи
2 вопрос:
необходимо сделать кнопку на каскадное удаление записей из выбранной таблицы Form1, как примерно будет это выглядеть?
Вложения
Тип файла: rar пп гундарь.rar (342.4 Кб, 12 просмотров)

Последний раз редактировалось trojan218; 05.03.2015 в 12:30.
trojan218 вне форума Ответить с цитированием
Старый 05.03.2015, 12:44   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Это что?
Код:
procedure TDataModule2.Publishing_houseBeforePost(DataSet: TDataSet);
begin
'Publising_house''Code_publish'.Value:= 'Books''Code_publish'.Value;
end;
Цитата:
Undeclared identifier: 'Publising_houseCode_publish'
Говорит, что не определен идентификатор. Лечение - определить

PS - весь код на свалку
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.03.2015, 12:48   #3
trojan218
Пользователь
 
Регистрация: 21.02.2015
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Это что?
Код:
procedure TDataModule2.Publishing_houseBeforePost(DataSet: TDataSet);
begin
'Publising_house''Code_publish'.Value:= 'Books''Code_publish'.Value;
end;
Говорит, что не определен идентификатор. Лечение - определить

PS - весь код на свалку
Можете предложить альтернативу?
trojan218 вне форума Ответить с цитированием
Старый 05.03.2015, 13:01   #4
trojan218
Пользователь
 
Регистрация: 21.02.2015
Сообщений: 12
По умолчанию

определить? а нельзя ли указать текущей записи из таблицы? если да то приведите пожалуйста пример.
trojan218 вне форума Ответить с цитированием
Старый 05.03.2015, 14:33   #5
water_
Пользователь
 
Регистрация: 01.11.2013
Сообщений: 34
По умолчанию

Цитата:
обеспечить целостность в Делфи
обеспечить целостность БД в delphi ни к чему, это нужно делать в самом ms access
эти процедуры можно с чистой совестью убрать

Цитата:
Возникают следующие ошибки
в этой ситуации google translate вполне может подсказать что они означают
https://translate.google.kz/?ie=UTF-...or%20semicolon

Цитата:
сделать кнопку на каскадное удаление записей из выбранной таблицы
каскадное удаление произойдет в БД, если правильно указал связи между таблицами

удаление текущей записи в delphi:
Код:
ADOTable1.Delete
или
Код:
ADOTable1.DeleteRecords(arCurrent)
water_ вне форума Ответить с цитированием
Старый 05.03.2015, 20:35   #6
trojan218
Пользователь
 
Регистрация: 21.02.2015
Сообщений: 12
По умолчанию Ещё вопрос возник

Со связями таблиц всё уладил.
3 вопрос
Цитата:
procedure TForm1.FormShow(Sender: TObject);
begin
begin
if FirstShow then
begin
FirstShow:=False;
Purchases.Active:=true;
Books.Active:=true;
Authors.Active:=true;
Deliveries.Active:=true;
Publishing_house.Active:=true;
end;
end;
Ругается на Active
[Error] Unit1.pas(51): Undeclared identifier: 'Active'
делал глобальной переменной, не помогло.
trojan218 вне форума Ответить с цитированием
Старый 05.03.2015, 21:54   #7
water_
Пользователь
 
Регистрация: 01.11.2013
Сообщений: 34
По умолчанию

Цитата:
Undeclared identifier: 'Active'
или " не объявленный идентификатор: 'Active' "

уверен что ошибка именно в этой процедуре?
судя по ошибке... 'Active' где то используешь как переменную

Цитата:
делал глобальной переменной, не помогло
что делал глобальной переменной?
water_ вне форума Ответить с цитированием
Старый 05.03.2015, 22:27   #8
trojan218
Пользователь
 
Регистрация: 21.02.2015
Сообщений: 12
По умолчанию

Цитата:
Сообщение от water_ Посмотреть сообщение
или " не объявленный идентификатор: 'Active' "

уверен что ошибка именно в этой процедуре?
судя по ошибке... 'Active' где то используешь как переменную


что делал глобальной переменной?
как процедуру создал и вводил Open, Close, Active выходила такая ошибка, база не влезла
Цитата:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Purchases: TGroupBox;
DBGrid1: TDBGrid;
Books: TGroupBox;
DBGrid3: TDBGrid;
Deliveries: TGroupBox;
DBGrid4: TDBGrid;
Authors: TGroupBox;
DBGrid5: TDBGrid;
Publishing_house: TGroupBox;
DBGrid2: TDBGrid;
btn1: TButton;
btn2: TButton;
procedure FormShow(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;


implementation

uses Unit2;

{$R *.dfm}
var
FirstShow: Boolean=true;


procedure TForm1.FormShow(Sender: TObject);

begin
if FirstShow then
begin
FirstShow:=False;
Purchases.Active:=true;
Books.Active:=true;
Authors.Active:=true;
Deliveries.Active:=true;
Publishing_house.Active:=true;
end;


end;
end.
Project1
Цитата:
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {DataModule2: TDataModule};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDataModule2 , DataModule2);
Application.Run;
end.
Unit2
Цитата:
unit Unit2;

interface

uses
SysUtils, Classes, DB, ADODB;

type
TDataModule2 = class(TDataModule)
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
DataSource2: TDataSource;
DataSource3: TDataSource;
DataSource4: TDataSource;
DataSource5: TDataSource;
Purchases: TADOTable;
Books: TADOTable;
Authors: TADOTable;
Deliveries: TADOTable;
Publishing_house: TADOTable;
ADOQuery1: TADOQuery;
PurchasesDSDesigner: TAutoIncField;
PurchasesCode_book: TIntegerField;
PurchasesDate_order: TDateTimeField;
PurchasesCode_delvery: TIntegerField;
PurchasesTaype_purchases: TBooleanField;
PurchasesCost: TBCDField;
PurchasesAmaunt: TIntegerField;
PurchasesCode_Purchases: TIntegerField;
BooksCode_book: TIntegerField;
BooksTitle_book: TWideStringField;
BooksCode_author: TIntegerField;
BooksPages: TIntegerField;
BooksCode_publish: TIntegerField;
DeliveriesCode_delivery: TIntegerField;
DeliveriesName_delivery: TWideStringField;
DeliveriesName_company: TWideStringField;
DeliveriesAddress: TWideStringField;
DeliveriesPhone: TWideStringField;
DeliveriesINN: TWideStringField;
Publishing_houseCode_publish: TIntegerField;
Publishing_housePublish: TWideStringField;
Publishing_houseCity: TWideStringField;
AuthorsCode_author: TIntegerField;
AuthorsName_author: TWideStringField;
AuthorsBirthday: TDateTimeField;


private
{ Private declarations }
public
{ Public declarations }
end;

var
DataModule2: TDataModule2;


implementation

{$R *.dfm}


end.
Diagrama целостности

ошибки
Цитата:
[Error] Unit1.pas(50): Undeclared identifier: 'Active'
[Error] Unit1.pas(51): Undeclared identifier: 'Active'
[Error] Unit1.pas(52): Undeclared identifier: 'Active'
[Error] Unit1.pas(53): Undeclared identifier: 'Active'
[Error] Unit1.pas(54): Undeclared identifier: 'Active'
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'
База целикомhttps://yadi.sk/d/LSUHAs8Xf532i

Последний раз редактировалось trojan218; 06.03.2015 в 02:40.
trojan218 вне форума Ответить с цитированием
Старый 06.03.2015, 08:31   #9
water_
Пользователь
 
Регистрация: 01.11.2013
Сообщений: 34
По умолчанию

Цитата:
Purchases: TGroupBox;
Books: TGroupBox;
Deliveries: TGroupBox;
Authors: TGroupBox;
Publishing_house: TGroupBox;
Цитата:
Purchases.Active:=true;
Books.Active:=true;
Authors.Active:=true;
Deliveries.Active:=true;
Publishing_house.Active:=true;
а что конкретно хочешь запустить??

думаю имелось ввиду
Цитата:
Purchases: TADOTable;
Books: TADOTable;
Authors: TADOTable;
Deliveries: TADOTable;
Publishing_house: TADOTable;
но они в другом модуле... так будет лучше...
Код:
  with DataModule2 do begin
    Purchases.Active:=true;
    Books.Active:=true;
    Authors.Active:=true;
    Deliveries.Active:=true;
    Publishing_house.Active:=true;
  end;
p.s. яркая демонстрация необходимости использования префиксов
gbPurchases и tbPurchases перепутать сложнее

Последний раз редактировалось water_; 06.03.2015 в 08:39.
water_ вне форума Ответить с цитированием
Старый 06.03.2015, 10:38   #10
trojan218
Пользователь
 
Регистрация: 21.02.2015
Сообщений: 12
По умолчанию

Цитата:
Сообщение от water_ Посмотреть сообщение
а что конкретно хочешь запустить??

думаю имелось ввиду

но они в другом модуле... так будет лучше...
Код:
  with DataModule2 do begin
    Purchases.Active:=true;
    Books.Active:=true;
    Authors.Active:=true;
    Deliveries.Active:=true;
    Publishing_house.Active:=true;
  end;
p.s. яркая демонстрация необходимости использования префиксов
gbPurchases и tbPurchases перепутать сложнее
открытие и закрытие таблиц, при открытие и закрытие программы. Дабы избежать проблем.
trojan218 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает поиск по бд Access на основе sql приложение написано в delphi Elizaveta007 БД в Delphi 4 19.08.2013 10:10
Диагностика уровня закритичности конвективного течения на основе численного решения задачи Релея -Бенара(Делфи) Эльвира91 Помощь студентам 3 15.03.2013 17:27
Классификация элементов модели разреза скважины на основе метода главных компонент( Делфи) Эльвира91 Помощь студентам 0 14.02.2013 18:56
Делфи и access Zhenya666 Помощь студентам 1 30.04.2012 09:54
MS Access вывод отчёта на основе данных формы katrina-n Помощь студентам 0 29.11.2009 18:40