DTECH SST - Tài liệu kỹ thuật
  • CÀI ĐẶT DTECH
    • PHIÊN BẢN ĐÓNG GÓI
    • PHIÊN BẢN CUSTOMIZE
      • UPDATE LẬP TRÌNH SANG KHÁCH HÀNG
    • CHUYỂN MÁY CHỦ ĐÓNG GÓI
    • LỖI KẾT NỐI MÁY CHỦ
    • LỖI ATTACH DATA KHÔNG NHẬN
    • QUẢN LÝ TRẠM
    • BẢN SERVICE
      • KHÔNG NHẬN ĐỦ DATA KHI ĐĂNG NHẬP
      • KHÔNG TẠO ĐƯỢC DATA MỚI
      • KIỂM TRA KHÓA BẢN DỊCH VỤ
    • LỖI ĐĂNG NHẬP TRÊN MÁY CHỦ
    • LỖI ĐĂNG NHẬP MÁY TRẠM
    • CÀI ĐẶT SQL LỖI
    • XỬ LÝ LIÊN QUAN KEY HỆ THỐNG
    • Lỗi đọc thông tin phần cứng (Alias not found)
    • A severe error occurred on the current command
    • GỬI HƯỚNG DẪN CÀI ĐẶT XONG
    • PHIÊN BẢN CŨ
  • HÓA ĐƠN ĐIỆN TỬ
    • CHỮ KÝ SỐ - CKS
    • CẤU HÌNH KẾT NỐI
    • CÔNG CỤ LIÊN QUAN
    • TỔNG HỢP LỖI CHUNG
      • Update trạng thái huỷ cho chứng từ
      • update trạng thái hoá đơn effect
      • Xoá menu chuột phải bị lặp lại
    • TỔNG HỢP LỖI M-INVOICE
    • TỔNG HỢP LỖI VNPT
    • TỔNG HỢP LỖI VIETTEL
    • TỔNG HỢP LỖI BKAV
    • TỔNG HỢP LỖI VIN
    • TỎNG HỢP LỖI EASYINVOICE
    • LƯU Ý HOÁ ĐƠN ĐIỆN TỬ
  • LỖI THƯỜNG GẶP
    • LƯU BÁO LỖI
    • GIAO DIỆN VỠ FONT
  • CONVERT DỮ LIỆU
    • EFFECT 2.0
    • EFFECT 3.0 - 4.0 - 6.0
    • MISA VERSION DESKTOP
    • 3T SOFT
  • EXCEL
  • DANH MỤC
    • TẠO CỘT MÃ TĂNG TỰ ĐỘNG
    • XOÁ BỎ CÁC DÒNG TRÙNG
    • UPDATE BANKACCOUNT THEO TÀI KHOẢN KẾ TOÁN
    • MỞ RỘNG KÝ TỰ CHO CỘT MÃ
    • XỬ LÝ SỐ LƯỢNG QUY ĐỔI
    • UPDATE CHITIETTHEO
  • DỮ LIỆU KẾ TOÁN
    • CẬP NHẬT DIỄN GIẢI BÁN HÀNG
  • LƯƠNG
    • CÁC LỖI THƯỜNG GẶP
  • NGHIỆP VỤ
    • TEMP NOTE PHÂN TÍCH
  • PHIẾU IN NHẬP LIỆU
    • IN MẪU DẠNG GROUP
    • Merger các ô của cột trên các dòng giống nhau
    • CÂU LỆNH FORMAT PHIẾU IN
    • Lặp lại tiêu đề in + logo... ở trang 2
    • Lặp lại tiêu đề in
  • KẾT NỐI HTKK
    • MAPING TỪ 1 BÁO CÁO
    • MAPING TỪ NHIỀU BÁO CÁO
  • BÁO CÁO
    • CÔNG THỨC
    • BÁO CÁO DYNAMIC ĐỘNG
      • dynamic cột là tháng
    • LẤY ĐIỀU KIỆN LỌC BÁO CÁO
    • TEMP NOTE PHÂN TÍCH
    • ENTER CHI TIẾT
    • Trước tất cả - chặn khi thiếu điều kiện lọc
  • EFFECT
    • TRUYỀN ĐẨY DỮ LIỆU *
    • GHÉP TỆP U*.DBF
    • KIỂM TRA TRẠM
    • FONT
    • BÁO CÁO
  • SQL SERVER
    • Một số lỗi truy vấn SQL
    • Tài khoản sa của SQL SERVER
    • SQL Server blocked access (OpenRowset/OpenDatasource)
    • Chế độ xp_cmd shell trong SQL Server
    • Tạo Backup tự động SQL Express
    • SQL Script Kiểm tra
    • SQL Scritp Fix Database
    • Attach and Detach Database
    • SQL LOCAL DB
    • HÀM TÁCH SỐ VÀ CHỮ KHỎI CHUỖI
    • KHÔNG TÌM THẤY SQL CONFIG
    • identity_insert table
    • BACKUP - RESTORE SQL
    • Insert tables
    • Sửa lỗi cài đặt SQL
    • Shrink Database
    • Kiểm tra port SQL sử dụng
    • CONVERT DATATYPE SQL
    • Xóa bản ghi trùng trên bảng
    • Replication SQL SERVER
  • THUẾ
    • HÓA ĐƠN MUA VÀO LÀ HÓA ĐƠN BÁN HÀNG CÓ CẦN KÊ KHAI TRÊN TỜ KHAI THUẾ GTGT KHÔNG?
    • Kết chuyển thuế GTGT cuối kỳ
  • LỆNH CẦN BIẾT
  • CÔNG CỤ KHÁC
    • RADMIN VPN
      • CÀI ĐẶT RADMIN
      • KIỂM TRA RADMIN
      • Sửa lỗi Bạn bị cấm ( You are banned )
      • Tắt Auto Metric Radmin VPN
      • Mô hình hoạt động của Radmin VPN
    • Tailscale VPN
  • Cài đặt Google Drive để backup dữ liệu
  • GIÁ THÀNH
    • NÔNG NGHIỆP - TRỒNG TRỌT
      • CÂY TRỒNG 1 LẦN, THU HOẠCH NHIỀU LẦN
      • CÂY TRỒNG LÂU NĂM
      • CÂY TRỒNG NGẮN NGÀY
  • 📶MẠNG LAN - INTERNET
  • KIẾN THỨC PHẦN CỨNG MÁY TÍNH
  • KIỂM TRA MÁY TÍNH
  • WINDOWS SERVER
    • WMI Repository
  • Chữ ký số
    • XOÁ DANH SÁCH CKS CŨ
  • Hướng dẫn tạo SSL/TLS miễn phí với OpenSSL và Let’s Encrypt
Powered by GitBook
On this page
  1. DANH MỤC

TẠO CỘT MÃ TĂNG TỰ ĐỘNG

Update lại cột mã cho khách hàng nếu muốn tăng tự động

  1. Tìm kiếm và update trên DTECH update cột mã vật tư

-- Lấy cột Vattu là mã ngầm của danh mục Vật tư tăng dần để làm ID tăng dần
select Ma,ten,vattu,'VT'+ FORMAT(Vattu, '000000') from Vattu
where vattu<>0
order by vattu

Update Vattu
set Ma = 'VT'+ FORMAT(Vattu, '000000'),Modidate=getdate()
where vattu<>0

2. Kiểu chữ cái trước và số sau: “KH001 > KH002 > … > KH999”

--1. FUNCTION
CREATE FUNCTION AUTO_IDKH()
RETURNS VARCHAR(5)
AS
BEGIN
	DECLARE @ID VARCHAR(5)
	IF (SELECT COUNT(MAKH) FROM KHACHHANG) = 0
		SET @ID = '0'
	ELSE
		SELECT @ID = MAX(RIGHT(MAKH, 3)) FROM KHACHHANG
		SELECT @ID = CASE
			WHEN @ID >= 0 and @ID < 9 THEN 'KH00' + CONVERT(CHAR, CONVERT(INT, @ID) + 1)
			WHEN @ID >= 9 THEN 'KH0' + CONVERT(CHAR, CONVERT(INT, @ID) + 1)
		END
	RETURN @ID
END
--2. Thiết lập mặc định hàm DBO.AUTO_IDKH() cho trường MAKH
CREATE TABLE KHACHHANG(
	MAKH CHAR(5) PRIMARY KEY CONSTRAINT IDKH DEFAULT DBO.AUTO_IDKH(),
	HOTEN NVARCHAR(50) NOT NULL,
	SDT VARCHAR(11) NULL,
	DIACHI NVARCHAR(100) NULL,
	EMAIL VARCHAR(50) NULL
)
--Các bạn có thể tăng chiều dài mã bằng cách khai báo tăng chiều dài của MAKH và thêm nhiều nhánh CASE hơn.
  1. Kiểu chỉ bao gồm chữ cái: AAAA > AAAB > … > ZZZZZ

// Function tạo mã
CREATE FUNCTION TAOMAVE(@BEFORECODE CHAR(6))---65->90
RETURNS CHAR(6)
AS
BEGIN
	DECLARE @ONE AS SMALLINT, @TWO SMALLINT, @THREE SMALLINT, @FOUR SMALLINT, @FIVE SMALLINT, @SIX SMALLINT
	DECLARE @MAVE CHAR(6)
	SELECT @ONE=ASCII(LEFT(@BEFORECODE,1))
	SELECT @TWO=ASCII(SUBSTRING(@BEFORECODE,2,1))
	SELECT @THREE=ASCII(SUBSTRING(@BEFORECODE,3,1))
	SELECT @FOUR=ASCII(SUBSTRING(@BEFORECODE,4,1))
	SELECT @FIVE=ASCII(SUBSTRING(@BEFORECODE,5,1))
	SELECT @SIX=ASCII(RIGHT(@BEFORECODE,1))
	IF @SIX<90
		SELECT @SIX=@SIX+1
	ELSE
		BEGIN
			SELECT @SIX=65
			IF @FIVE<90
				SELECT @FIVE=@FIVE+1
			ELSE
				BEGIN
					SELECT @FIVE=65
					IF @FOUR<90
						SELECT @FOUR=@FOUR+1
					ELSE
						BEGIN
							SELECT @FOUR=65
							IF @THREE<90
								SELECT @THREE=@THREE+1
							ELSE
								BEGIN
									SELECT @THREE=65
									IF @TWO<90
										SELECT @TWO=@TWO+1
									ELSE
										BEGIN
											SELECT @TWO=65
											IF @ONE<90
												SELECT @ONE=@ONE+1
											ELSE
												RETURN NULL
										END				
								END			
						END		
				END	
		END
	SELECT @MAVE=CHAR(@ONE)+CHAR(@TWO)+CHAR(@THREE)+CHAR(@FOUR)+CHAR(@FIVE)+CHAR(@SIX)
	RETURN @MAVE
END
  1. Kiểu Ngày Tháng Năm + Chữ cái + Số tự động tăng: 01012001DV00001 > 02012001DV00002

// Function
CREATE FUNCTION auto_iddv()
RETURNS VARCHAR(15)
AS
BEGIN
	DECLARE @id VARCHAR(15)
	IF (SELECT COUNT(MaDV) FROM DATVE) = 0
		SET @id = '0'
	ELSE
		SELECT @id = MAX(RIGHT(MaDV, 5)) FROM DATVE
		SELECT @id = CASE
			WHEN @id = 99999 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV00001'
			WHEN @id >= 0 and @id < 9 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV0000' + CONVERT(CHAR, CONVERT(INT, @id) + 1)
			WHEN @id >= 9 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV000' + CONVERT(CHAR, CONVERT(INT, @id) + 1)
			WHEN @id >= 99 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV00' + CONVERT(CHAR, CONVERT(INT, @id) + 1)
			WHEN @id >= 999 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV0' + CONVERT(CHAR, CONVERT(INT, @id) + 1)
			WHEN @id >= 9999 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV' + CONVERT(CHAR, CONVERT(INT, @id) + 1)
		END
	RETURN @id
END
  1. Cập nhật những dòng bị trống cột mã tăng dần theo cái có sẵn:

declare @vitri int -- Vị trí những mã trống theo thứ tự tăng dần
declare @maxso int -- Mã hàng đang đánh số to nhất trên cột mã
declare @kytu nvarchar(30) -- Ký tự đầu của cột mã
declare @vattu int
--HH02672 Mã hàng đang đánh số to nhất trên cột mã
set @maxso = 2672
set @kytu=N'HH' 
declare bangvattu cursor for -- Bảng select ra những mã hàng bị trống cột Mã
--select ROW_NUMBER() OVER(ORDER BY ten ASC) AS vitri,ma,ten,vattu,donvi from vattu where ma='' and donvi=1 and vattu<>0
select ROW_NUMBER() OVER(ORDER BY ten ASC) AS vitri,vattu from vattu where ma='' and donvi=1 and vattu<>0
open bangvattu
Fetch next from bangvattu
	into @vitri,@vattu
While @@FETCH_STATUS=0
BEGIN
	print 'vitri: '+ CAST(@vitri as nvarchar)
	print 'Ma: '+@kytu+FORMAT(@maxso+@vitri,'00000')
	Update VatTu set ma=@kytu+FORMAT(@maxso+@vitri,'00000') where vattu=@vattu and donvi=1
	Fetch next from bangvattu
	into @vitri,@vattu
END

CLOSE bangvattu
DEALLOCATE bangvattu

--select ma,ten,VatTu,donvi from VatTu order by ma
  1. Cập nhật lại mã đối tượng theo nhóm

declare @vitri int -- Vị trí những mã trống theo thứ tự tăng dần
declare @maxso int -- Mã hàng đang đánh số to nhất trên cột mã
declare @kytu nvarchar(30) -- Ký tự đầu của cột mã
declare @khachhang int

--HH02672 Mã hàng đang đánh số to nhất trên cột mã
set @maxso = 0
set @kytu=N'NCC.' 

declare bangkh cursor for -- Bảng select ra những mã hàng bị trống cột Mã
--select ROW_NUMBER() OVER(ORDER BY ten ASC) AS vitri,ma,ten,vattu,donvi from vattu where ma='' and donvi=1 and vattu<>0
select ROW_NUMBER() OVER(ORDER BY ten ASC) AS vitri,khachhang from khachhang where ma like 'NCC%' and donvi=1 and khachhang<>0
open bangkh
Fetch next from bangkh
	into @vitri,@khachhang
While @@FETCH_STATUS=0
BEGIN
	print 'vitri: '+ CAST(@vitri as nvarchar)
	print 'Ma: '+@kytu+FORMAT(@maxso+@vitri,'00000')
	Update khachhang set ma=@kytu+FORMAT(@maxso+@vitri,'00000'),modidate=getdate() where khachhang=@khachhang and donvi=1
	Fetch next from bangkh
	into @vitri,@khachhang
END

CLOSE bangkh
DEALLOCATE bangkh
PreviousDANH MỤCNextXOÁ BỎ CÁC DÒNG TRÙNG

Last updated 6 months ago