Программеры! Нужна помощь

Автор Evil Bro, сентября 06, 2005, 09:41:50

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Evil Bro

Не знаю, или это я совсем тупой, но у меня ничего не получается, хотя делаю всё, вроде бы, как надо.

Нужно написать прогу. Язык обжект паскаль. Имеем две связанные таблицы. В главной таблице поля:
S_Code (ключевое), f_name, m_name, l_name. В дочерней след. поля: С_num (ключевое), C_Code, w_phone, mob_phone, h_phone. Нужно добавить запись в эти таблицы. Ставлю две кнопки btnNew, btnApply. В обработчике для кнопки btnNew пишу

Table1.Insert;
Table2.Insert;

В обработчике для кнопки btnApply пишу:

Table1.Post;
n:=Table1.FieldByName('S_Code').AsInteger;
Label1.Caption:=IntToStr(n);
Table2.Edit;
Table2.FieldByName('C_Code').AsInteger:=n;
Table2.Post;

Первая запись для поля C_Code добавляется, а другие поля не заполняются. МЛЯ! Надоело! Помогите!

Фокс

как всё это сложно. :shock: я лично лучше готовую куплю и сней помучаюсь . :lol:

kesha

честно говоря, не понимаю :razz:  :razz:  :razz:


Pikabu

Хех, увы, но я тока в пхп ковыряюсь более менее.  :roll:

TARiK

Table1.Post;
n:=Table1.FieldByName('S_Code').AsInteger;
Label1.Caption:=IntToStr(n);
Table2.Edit;
Table2.FieldByName('C_Code').AsInteger:=n;
Table2.Post;

У тебя вызывается в начале Table1.Post а только потом заполняются поля данных.

n:=Table1.FieldByName('S_Code').AsInteger;
Label1.Caption:=IntToStr(n);
Table1.Post;
Table2.Edit;
Table2.FieldByName('C_Code').AsInteger:=n;
Table2.Post;
... наша жизнь - СКОРОСТЬ,
                   наше сердце - BMW...
BMW Style & E30 Club
///М-Гараж - тюнинг и ремонт старых BMW

Evil Bro

Цитата: "TARiK"Table1.Post;
n:=Table1.FieldByName('S_Code').AsInteger;
Label1.Caption:=IntToStr(n);
Table2.Edit;
Table2.FieldByName('C_Code').AsInteger:=n;
Table2.Post;

У тебя вызывается в начале Table1.Post а только потом заполняются поля данных.

n:=Table1.FieldByName('S_Code').AsInteger;
Label1.Caption:=IntToStr(n);
Table1.Post;
Table2.Edit;
Table2.FieldByName('C_Code').AsInteger:=n;
Table2.Post;

В таком случае в переменную n запишется 0

TARiK

кстати ты нигде не проверяешь какие значения тебе возвращают процедуры, а в них могут быть коды ошибок. СИдел бы я рядом нашли траблу а так )))
что делает Пост что делает эдит?

откуда ты считываешь базу, она правильно считывается?
... наша жизнь - СКОРОСТЬ,
                   наше сердце - BMW...
BMW Style & E30 Club
///М-Гараж - тюнинг и ремонт старых BMW

Evil Bro

Цитата: "TARiK"кстати ты нигде не проверяешь какие значения тебе возвращают процедуры, а в них могут быть коды ошибок. СИдел бы я рядом нашли траблу а так )))
что делает Пост что делает эдит?

откуда ты считываешь базу, она правильно считывается?

Пост-это в таблицу вносятся значения из буфера. Эдит-открытие таблицы для редактирования :(

TARiK

Table1.Post; Постим таблицу
n:=Table1.FieldByName('S_Code').AsInteger; читаем в n S_Code
Label1.Caption:=IntToStr(n); Выставляем текстовое значение в Lable1 равное цифровому n
Table2.Edit; редактируем таблицу 2
Table2.FieldByName('C_Code').AsInteger:=n; подменяем С_Code на н
Table2.Post; Постим.

Так. Может весь исходник пришлешь?

Table2.FieldByName('C_Code').AsInteger:=n; а так можно? Мне кажется нельзя. Или эта функция указатель возращает?
... наша жизнь - СКОРОСТЬ,
                   наше сердце - BMW...
BMW Style & E30 Club
///М-Гараж - тюнинг и ремонт старых BMW

Diamon

Ты лучше скажи как в конфэты "подюшечка" варэнье изнутри закладывают :flyy:

Evil Bro

Цитата: "TARiK"

Table2.FieldByName('C_Code').AsInteger:=n; а так можно? Мне кажется нельзя. Или эта функция указатель возращает?

Можно! так можно. Поле C_Code целочисленное, переменная н тоже.. но вот как раз эта переменная добавляется в таблицу. Все остальные поля не заполняются

TARiK

... наша жизнь - СКОРОСТЬ,
                   наше сердце - BMW...
BMW Style & E30 Club
///М-Гараж - тюнинг и ремонт старых BMW

Evil Bro

Цитата: "TARiK"дай полный исходник )

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   DataSource1: TDataSource;
   DataSource2: TDataSource;
   Table1: TTable;
   Table2: TTable;
   DBGrid1: TDBGrid;
   DBGrid2: TDBGrid;
   DBNavigator1: TDBNavigator;
   DBNavigator2: TDBNavigator;
   btnApply: TButton;
   btnNew: TButton;
   Label1: TLabel;
   DBEdit1: TDBEdit;
   DBEdit2: TDBEdit;
   DBEdit3: TDBEdit;
   DBEdit4: TDBEdit;
   Label2: TLabel;
   Label3: TLabel;
   Label4: TLabel;
   Label5: TLabel;
   Button1: TButton;
   procedure btnNewClick(Sender: TObject);
   procedure btnApplyClick(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var

 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnNewClick(Sender: TObject);
var
 n:integer;
begin
 Table1.Insert;
 Table2.Insert;
end;

procedure TForm1.btnApplyClick(Sender: TObject);
var
 n:integer;
begin
 Table1.Post;
 n:=Table1.FieldByName('S_Code').AsInteger;
 Label1.Caption:=IntToStr(n);
 Table2.Edit;
 Table2.FieldByName('C_Code').AsInteger:=n;
 Table2.Post;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 n:integer;
begin
  Table1.Last;
  Table1.FieldByName('S_Code').AsInteger:=n;
  Label1.Caption:=IntToStr(n);
end;

end.

TARiK

Так ты только в одно поле пишешь? А надо в каждое. али не так?
... наша жизнь - СКОРОСТЬ,
                   наше сердце - BMW...
BMW Style & E30 Club
///М-Гараж - тюнинг и ремонт старых BMW

Evil Bro

Цитата: "TARiK"Так ты только в одно поле пишешь? А надо в каждое. али не так?

Да. Надо все поля дочерней таблицы заполнить. Для этого у меня на форме компонент DBGrid