Thiết lập Relationship Database kế toán

  • Thread starter Thread starter nghikt2
  • Ngày gửi Ngày gửi

nghikt2

Sơ cấp
Tôi có 3 table:
- CT_MAIN(STT,SO_CT,NGAY_CT,DIEN_GIAI...) Khóa (SO_CT)
- CT_HTOAN(STT,SO_CT,TK_NO,TK_CO,SO_TIEN...) khóa (SO_CT,TK_NO,TK_CO)
- DM_TK(MA_TK,TEN_TK...) Khóa (MA_TK)
Xin hỏi diễn đàn lập relaitionship giữa 2 table DM_TK và CT_HTOAN như thế nào ? (Database thiết kế trên SQL server). Tôi chỉ làm được 1 trong hai mà thôi : MA_TK <-> TK_NO hoặc MA_TK <-> TK_CO. Mục tiêu mong muốn khi nhập dữ liệu vào TK_NO hoặc TK_CO thì phải tham chiếu vào MA_TK trong table DM_TK (không dùng trigger).
 
Sửa lần cuối:
Tôi có 3 table:
- CT_MAIN(STT,SO_CT,NGAY_CT,DIEN_GIAI...) Khóa (SO_CT)
- CT_HTOAN(STT,SO_CT,TK_NO,TK_CO,SO_TIEN...) khóa (SO_CT,TK_NO,TK_CO)
- DM_TK(MA_TK,TEN_TK...) Khóa (MA_TK)
Xin hỏi diễn đàn lập relaitionship giữa 2 table DM_TK và CT_HTOAN như thế nào ? (Database thiết kế trên SQL server). Tôi chỉ làm được 1 trong hai mà thôi : MA_TK <-> TK_NO hoặc MA_TK <-> TK_CO. Mục tiêu mong muốn khi nhập dữ liệu vào TK_NO hoặc TK_CO thì phải tham chiếu vào MA_TK trong table DM_TK (không dùng trigger).

Khi add table vào Relaitionship, nhớ add thêm một table DM-TK nữa(Khi đó trên lưới Rela có hai table là DM_TK và DM_TK_1, kéo MA_TK của DM_TK vàoTK_NO và MA_TK của DM_TK_1 vào TK_CO của CT_HTOAN, thế là OK rồi
Thân
 
Sửa lần cuối:
Ví dụ về thiết kế CSDL:

customers_and_invoices_model.gif
 
Em đang gặp khó khăn
1. Khi nhập chứng từ thì tài khoản đối ứng sẽ làm như thế nào
2. Bóc số liệu cho bảng lưu chuyển tiền tệ. (Ví dụ: Chỉ lọc ra số liệu phát sinh có của tài khoản 111 đối ứng tài khoản 331")
Vì không biết cách lấy tài khoản đối ứng trong bảng nên em không tính được các chỉ tiêu báo cáo tài chình
CSDL tổ chức như bên dưới . Nhờ các anh chị chỉ điểm

CREATE TABLE [dbo].[DMCT]
(
[LOAI_CT] [varchar] (20)NOT NULL ,
[TEN_LOAI_CT] [nvarchar] (50) NULL ,
[NHOM] [char] (1) NULL ,
[MO_TA] [nvarchar] (100) NULL ,
[TK_NO_DEFAULT] [nvarchar] (20) NULL ,
[TK_CO_DEFAULT] [nvarchar] (20) NULL ,
[ReportName] [varchar] (150) NULL ,
CONSTRAINT [PK_DMCT] PRIMARY KEY ([LOAI_CT])
)
ON [PRIMARY]
GO

CREATE TABLE [dbo].[DMTK]
(
[MA_TK] [varchar] (20) NOT NULL ,
[TEN_TK] [nvarchar] (255) NULL ,
[MO_TA] [nvarchar] (255) NULL ,
[MA_TKTH] [varchar] (20) NULL ,
[LOAI_SO_DU] [varchar] (50) NULL ,
[HACH_TOAN] [bit] NULL ,
[TKCN] [int] NULL ,
[HOAT_DONG] [bit] NULL ,
[DU_NO] [money] NULL DEFAULT (0),
[DU_CO] [money] NULL DEFAULT (0),
[LOAI_TK] [varchar] (50) NULL ,
CONSTRAINT [PK_DMTK] PRIMARY KEY([MA_TK])
)
ON [PRIMARY]
GO

CREATE TABLE [dbo].[CT_MAIN]
(
[IDCT] [int] NOT NULL ,
[LOAI_CT] [varchar] (20) NOT NULL ,
[SO_CT] [varchar] (20) NOT NULL ,
[NGAY_CT] [datetime] NOT NULL ,
[DIEN_GIAI] [nvarchar] (100) NULL ,
[KE_TOAN] [varchar] (20) NULL ,
[MA_KH] [varchar] (20) NULL ,
[ONG_BA] [nvarchar] (50) NULL ,
[TEN_CONG_TY] [nvarchar] (100) NULL ,
[DIA_CHI] [nvarchar] (150) NULL ,
[PTTT] [varchar] (2) NULL ,
[MA_SO_THUE] [char] (14) NULL ,
[BANG_KE] [char] (50) NULL ,
[KY_HIEU_HD] [varchar] (20) NULL ,
[SO_HD] [varchar] (7) NULL ,
[NGAY_HD] [datetime] NULL ,
[MAT_HANG] [nvarchar] (50) NULL ,
[TIEN_CHUA_THUE] [money] NULL ,
[THUE_SUAT] [int] NULL ,
[TIEN_THUE] [money] NULL ,
[TONG_TIEN] [money] NULL ,
[CT_KEM_THEO] [nvarchar] (80) NULL ,
[GHI_CHU] [nvarchar] (50) NULL ,
[Locked] [bit] NULL ,
[LockedBy] [varchar] (50) NULL ,
[CreatedBy] [varchar] (50) NULL ,
[CreatedDate] [datetime] NULL ,
[LastUpdateBy] [varchar] (50) NULL ,
[LastUpdateDate] [datetime] NULL ,
CONSTRAINT [PK_CTMAIN] PRIMARY KEY ([IDCT]),
CONSTRAINT [FK_CTMAIN_DMCT] FOREIGN KEY ([LOAI_CT]) REFERENCES [DMCT] ([LOAI_CT]) ON UPDATE CASCADE
)
ON [PRIMARY]
GO


CREATE TABLE [dbo].[CT_HTOAN]
(
[IDCT] [int] NOT NULL ,
[IDCTHT] [int] NOT NULL ,
[NO_CO] [Char] (1) NOT NULL,
[MA_TK] [varchar] (20) NOT NULL,
[TEN_TK] [nvarchar] (255) NULL,
[SO_TIEN] [money] NULL DEFAULT 0
CONSTRAINT [PK_CTHTOAN] PRIMARY KEY ([IDCT],[IDCTHT]) ON [PRIMARY] ,
CONSTRAINT [FK_CTHTOAN_CTMAIN] FOREIGN KEY ([IDCT]) REFERENCES [CT_MAIN] ([IDCT]) ON UPDATE CASCADE,
CONSTRAINT [FK_CTHTOAN_DMTK] FOREIGN KEY ([MA_TK]) REFERENCES [DMTK] ([MA_TK]) ON UPDATE CASCADE
)
ON [PRIMARY]
GO
 
1. Khi nhập chứng từ thì tài khoản đối ứng sẽ làm như thế nào?

Để lấy được tài khoản đối ứng thì dựa vào loại chứng từ và tài khoản nhập ví dụ:

Select TK_CO_DEFAULT From dbo.dmct where loai_ct = '01' and TK_NO_DEFAULT = '111';

Tuy nhiên kết quả trả về có thể là một danh sách một hoặc nhiều bản ghi phụ thuộc vào lúc bạn thiết lập một tài khoản đối ứng với một hay nhiều tài khoản khác. Bạn cần hiển thị danh sách chọn tài khoản đối ứng dưới dạng một ListBox để người dùng chọn.

2. Bóc số liệu cho bảng lưu chuyển tiền tệ. (Ví dụ: Chỉ lọc ra số liệu phát sinh có của tài khoản 111 đối ứng tài khoản 331")
Tương tự như trên nhưng mệnh đề where bạn bỏ điều kiện loại chứng từ đi.

Select TK_CO_DEFAULT From dbo.dmct where TK_NO_DEFAULT = '111';
 
Nguyên văn bởi nghikt2
Tôi có 3 table:
- CT_MAIN(STT,SO_CT,NGAY_CT,DIEN_GIAI...) Khóa (SO_CT)
- CT_HTOAN(STT,SO_CT,TK_NO,TK_CO,SO_TIEN...) khóa (SO_CT,TK_NO,TK_CO)
- DM_TK(MA_TK,TEN_TK...) Khóa (MA_TK)
Xin hỏi diễn đàn lập relaitionship giữa 2 table DM_TK và CT_HTOAN như thế nào ? (Database thiết kế trên SQL server). Tôi chỉ làm được 1 trong hai mà thôi : MA_TK <-> TK_NO hoặc MA_TK <-> TK_CO. Mục tiêu mong muốn khi nhập dữ liệu vào TK_NO hoặc TK_CO thì phải tham chiếu vào MA_TK trong table DM_TK (không dùng trigger).
--------------------------
Khi add table vào Relaitionship, nhớ add thêm một table DM-TK nữa(Khi đó trên lưới Rela có hai table là DM_TK và DM_TK_1, kéo MA_TK của DM_TK vàoTK_NO và MA_TK của DM_TK_1 vào TK_CO của CT_HTOAN, thế là OK rồi
Thân

----------------------------
em co tao ra 2 table trong relationship nhưng nó không hiểu vì em làm trong access
khó hiểu
 
Back
Top