<![CDATA[Messages posted by "lama"]]> /hvaonline/posts/listByUser/71831.html JForum - http://www.jforum.net Không vào Google.com.vn được - có phải do virus ?

.lht. wrote:
Bạn không truy cập được vào google.com.vn, bạn thử truy cập vào 1 số domain google của quốc gia khác xem ? google.com.ph google.de ...  
Các địa chỉ trên thì lại được. Như vậy nguyên nhân do đâu vậy bạn có biết không ?]]>
/hvaonline/posts/preList/40309/248626.html#248626 /hvaonline/posts/preList/40309/248626.html#248626 GMT
Không vào Google.com.vn được - có phải do virus ? Code:
C:\Users\nguyennp>nslookup
Default Server: google-public-dns-a.google.com
Address: 8.8.8.8

> yahoo.com
Server: google-public-dns-a.google.com
Address: 8.8.8.8

Non-authoritative answer:
Name: yahoo.com.mydomain.com
Address: 222.239.76.238
Vào Proxy của IE, Chrome thì thấy không có gì lạ. Vậy bạn nào có bị tình trạng như trên không, có thể chia sẻ không ? Có phải máy mình nhiễm virus ? Mình cài chương trình quét Virus và nó luôn update/chạy nên mình không nghĩ do virus. Cám ơn các bạn nhiều. NPN ]]>
/hvaonline/posts/preList/40309/248606.html#248606 /hvaonline/posts/preList/40309/248606.html#248606 GMT
IP bị vô Spamhaus, mail không đến người nhận

myquartz wrote:
Bạn check xem Mdaemon của bạn đã cấu hình đúng để gửi mail theo kiểu gọi là "SmartHost" chưa? Có thể Mdaemon vẫn chạy như bình thường, IP cơ quan bạn là IP động nên Spamhaus nó liệt vào dạng "không gửi mail server-to-server" được. Việc gửi mail đúng ra là phải relay qua SMTP của ISP khi bạn xài mail offline. Nếu chính SMTP của ISP chặn bạn lại, thì bạn phải check lại coi đã thiết lập xác thực chưa (thường cách này để kiểm tra hợp lệ khi gửi mail relay qua ISP), ISP của bạn hỗ trợ ra sao? 
Mdaemon mình cấu hình gởi thông qua Hosting (Relay), có Authenticate luôn, xem log thấy gởi transfer completed luôn mà vẫn không tới được. Liên hệ Hosting thì nó cứ một mực nói là nó không có block IP của mình.

invalid-password wrote:
Post nguyên văn cái câu log đó lên xem nào, xem nó liệt vào danh sách nào của Spamhaus.  
Giờ thì mình reset IP lại đã gởi được (gởi relay qua Hosting). Nhưng chiều chắc lại gởi không tới (mặc dù xem log là gởi tới, không thấy báo lỗi gì trả về cả). IP bị liệt kê vào XBL của Spamhaus.org ]]>
/hvaonline/posts/preList/21249/218132.html#218132 /hvaonline/posts/preList/21249/218132.html#218132 GMT
IP bị vô Spamhaus, mail không đến người nhận /hvaonline/posts/preList/21249/218021.html#218021 /hvaonline/posts/preList/21249/218021.html#218021 GMT Cần ai hiểu sâu về SQL Server giúp đỡ tìm nguyên nhân SQL chậm www.computerperformance.co.uk  thì hình như là ổ cứng bị overload thì phải. Memory cũng có vấn đề hay sao đó, Mình đã Enable PAE, restart server, gán Permission cho User để Lock Page, rồi Enable AWE lên 4GB, restart SQL nhưng thấy SQL vẫn không sử dụng bao nhiêu RAM (Tổng cộng cứ ở mức 2.3 GB là cao nhất, trong đó SQL sử dụng 1.6GB). Link :
http://msdn.microsoft.com/en-us/library/ms190673.aspx 
Xem Performance của Memory thì Page Faults/Sec hình như hơi bị nhiều, không biết có phải RAM bị hư không nữa. Nhờ mọi người tiếp tục giúp đỡ và chia sẻ xem mình có nên thêm ổ cứng và thay RAM không ? Ổ cứng cho chạy RAID10 chắc OK hơn RAID5 không ? Mình cũng nghĩ đến giải pháp SAN nhưng tốn kém quá, mà không lý nào Server vậy, với vài chục GB database mà chạy không nổi. Hic. Phần rebuild index thì mình không dám đụng vào dưới SQL vì chương trình có cung cấp công cụ rebuild index và chỉ dám thực hiện trên đó. Hiện tại với Server cấu hình trên, SELECT 1 bảng có 59 cột, 1triêu2 dòng thì mất 1 phút 20 giây thì có chấp nhận được không nhỉ ? P/S : Mình có đính kèm file theo dõi Performance của HDD, Memory và Network bên dưới.
http://www.mediafire.com/?c74o54winr338ir 
]]>
/hvaonline/posts/preList/35132/216428.html#216428 /hvaonline/posts/preList/35132/216428.html#216428 GMT
Cần ai hiểu sâu về SQL Server giúp đỡ tìm nguyên nhân SQL chậm /hvaonline/posts/preList/35132/215997.html#215997 /hvaonline/posts/preList/35132/215997.html#215997 GMT Cần ai hiểu sâu về SQL Server giúp đỡ tìm nguyên nhân SQL chậm

conmale wrote:
Nhìn chung mấy cái storeproc này có những đoạn query quá rộng (SELECT *) và có quá nhiều sub-queries. Đây là nguyên do tạo ra kém hiệu suất nếu xét trên bình diện truy vấn CSDL. Cách cải thiện là nên tối ưu lại storeproc và nên trao bớt trách nhiệm trên tầng ứng dụng (applications) việc hình thành các query statements cụ thể thay vì phó mặc cho storeproc thực hiện quá nhiều sub-queries. MSSQL chạy trên nền 32-bit mà phục vụ cho lượng truy vấn cao và nặng thì hoạt động cực kỳ kém. Cách có thể cải thiện trên bình diện này là migrate sang một máy chủ chạy 64-bit và MSSQL 64-bit. 
Các câu lệnh SELECT * em thấy là đúng theo nhu cầu mà ? Từ bảng dữ liệu khoảng trăm mấy cột, mình đã select đúng các cột cần đưa vào 1 bảng tạm để xử lý (chắc cũng có vấn đề ở đây, em đang check). Rất cám ơn anh đã góp ý trao bớt trách nhiệm cho App, so sánh với cách tổ chức của ứng dụng hiện tại (không thấy các stored truy vấn dữ liệu như em nói bên trên) thì chắc đây cũng chính là 1 trong những nguyên nhân chính rồi. Ứng dụng này hiện tại thì chưa hỗ trợ 64 bit nên em chỉ có thể cài 32 bit thôi. Thông tin thêm : Hic, tối qua em thức tới 1h30 chạy trace thử thì thấy với dữ liệu in trong 1 tháng cho 93 mặt hàng thì in khỏang 10 giây à. Nhưng khi chọn in trong 3 tháng thì mất hơn 1 phút, chọn in từ đầu năm đến giờ cho 250 mặt hàng thì chờ hơn 30 phút chưa thấy ra luôn. Lúc chạy trace và cả Active Monitor thấy thời gian gọi stored proc xảy ra cũng nhanh lắm, lâu thì có vài giây, còn lúc chạy nó có lock không cũng không biết, không thấy tình trạng là LOCKED. Các xử lý trong Active Monitor có Request là LOCK (không phải LOCKED) ngay cả khi thử SELECT 1 bảng đơn giản.]]>
/hvaonline/posts/preList/35132/215984.html#215984 /hvaonline/posts/preList/35132/215984.html#215984 GMT
Cần ai hiểu sâu về SQL Server giúp đỡ tìm nguyên nhân SQL chậm Code:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER                                   PROCEDURE [dbo].[GL_BK_ThanhPhamXuat]
		@Para1		NVARCHAR(20)	--@CompID
		,@Para2		NVARCHAR(20)	--@FYear
		
		,@Para3		NVARCHAR(20)	--CustCodeFrom
		,@Para4		NVARCHAR(20)	--CustCodeTo

		,@Para5		NVARCHAR(20)	--StockFrom
		,@Para6		NVARCHAR(20)	--StockTo

		,@Para7		NVARCHAR(20)	--@FromDate
		,@Para8		NVARCHAR(20)	--@ToDate

AS
--[GL_BK_ThanhPhamXuat] '01','10','','','M6009','M6009','100420','100426'
SET NOCOUNT ON
BEGIN
---==DECLARE AND INTINITIALIZE THE GLOBAL VARIANCE==-- 

	DECLARE @CompID as NVARCHAR(20)
	SET @CompID = @Para1
	 
	DECLARE @FYear as NVARCHAR(20)
	SET @FYear = @Para2

	DECLARE @CustCodeFrom as NVARCHAR(20)
	SET @CustCodeFrom = @Para3
	
DECLARE @CustCodeTo as NVARCHAR(20)
	SET @CustCodeTo = @Para4

DECLARE @StockFrom as NVARCHAR(20)
	SET @StockFrom = @Para5

DECLARE @StockTo as NVARCHAR(20)
	SET @StockTo = @Para6

	DECLARE @FromDate as NVARCHAR(20)
	SET @FromDate = @Para7
	 
	DECLARE @ToDate as NVARCHAR(20)
	SET @ToDate = @Para8

	DECLARE @SqlStr NVARCHAR(4000)

	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[tbThanhPhamXuat]')
						AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
				DROP TABLE [dbo].[tbThanhPhamXuat]

	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[tbBangLuuHoaDonChoTPXuat]')
						AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
				DROP TABLE [dbo].[tbBangLuuHoaDonChoTPXuat]
CREATE TABLE tbBangLuuHoaDonChoTPXuat
(
SoHoaDon nvarchar(50)
)
	SET @SqlStr = " INSERT INTO tbBangLuuHoaDonChoTPXuat SELECT "
+" distinct SL03002 from SL03" + @CompID + "00 "
+ "  where 	SL03005 BETWEEN '" + CONVERT(NVARCHAR(10),convert(datetime,@FromDate),112) + "'"
		+ "  AND	'" + CONVERT(NVARCHAR(10),convert(datetime,@ToDate),112) + "'"
	EXECUTE sp_executesql @SqlStr
update tbBangLuuHoaDonChoTPXuat
set SoHoaDon=Replace (SoHoaDon,'R','')
--select * from tbBangLuuHoaDonChoTPXuat
	CREATE TABLE tbThanhPhamXuat
	(
		MA_KH			NVARCHAR(20)
		,MA_HANG 		NVARCHAR(20)		
		,TEN_HANG		NVARCHAR(50)	
		,QUY_CACH		NVARCHAR(100)	
		,DON_VI_TINH		NVARCHAR(50)
		,TAI_KHOAN_DU		NVARCHAR(50)
		,SO_LUONG		FLOAT
		,DON_GIA_BAN		FLOAT	
--		,GIA_VON		FLOAT
		,THANH_TIEN		FLOAT
--		,THANH_TIEN_VON		FLOAT
		,MA_KHO			NVARCHAR(50)
--		,TEN_KHO		NVARCHAR(50)
--		,LOAI_NV		NVARCHAR(50)					bo 5/8/09              
--		,TEN_NV		NVARCHAR(50)                        bo 5/8/09 
		,SO_DON_HANG		NVARCHAR(50)
		,SO_HOA_DON		NVARCHAR(50)
		,GHI_CHU		NVARCHAR(50)
		,LOAI_NHAP_XUAT		NVARCHAR(50)
		,TI_LE_CK		NVARCHAR(50)
		,NGAY_HOA_DON		DATETIME	
--,SO_LO NVARCHAR(50)
	)
	SET @SqlStr = " INSERT INTO tbThanhPhamXuat SELECT "
		+ "  SC07006		AS	[MA_KH]"
		+ ", SC07003 		AS 	[MA_HANG]"
		+ ", SC01002		AS 	[TÊN_HÀNG]"
		+ ", SC01003		AS 	[QUY_CACH]"
		+ ", SC01135		AS 	[DON_VI_TINH]"
		+ ", ''			AS 	[TAI_KHOAN_DU]"
		+ ", SC07004		AS 	[SO_LUONG]"
		+ ", ROUND(SC07010,2)	AS 	[DON_GIA_BAN]"
--		+ ", SC07005		AS	[GIA_VON]"
		+ ", 0			AS 	[THANH_TIEN]"
--		+ ", 0			AS 	[THANH_TIEN_VON]"
		+ ", SC07009		AS 	[MA_KHO]"
--		+ ", SC23002		AS 	[TEN_KHO]"	
--		+ ", SUBSTRING(SC07012,49,2)			AS 	[LOAI_NV]"            bo 5/8/09
--		+ ", ''			AS	[TEN_NV]"                                     bo 5/8/09
		+ ", SC07007		AS	[SO_DON_HANG]"
		+ ", SC07056			AS	[SO_HOA_DON]"
		+ ", SC07055			AS	[GHI_CHU]"
		+ ", CONVERT(INT, SC07013)	AS	[LOAI_NHAP_XUAT]"
		+ ", ''				AS	[TI_LE_CK]"
		+ ", '1900/01/01'		AS 	[NGAY_HOA_DON]"
		--+",SC07029 "
		+ "  FROM 	SC07" + @CompID + "00 INNER JOIN SC01" + @CompID + "00 ON  SC07003 = SC01001"
	--	+ "  INNER JOIN SC23" + @CompID + "00 ON SC07009 = SC23001"
	--	+ "  INNER JOIN SL03" + @CompID + "00 ON SC07056 = SL03002 OR RTRIM(SC07007) + 'R' = SL03002"
		+ "  WHERE 	SC07001 = '01'"
		+ "  AND 	LEFT(SC07003,1) in ( 'A','M')"
--		+ "  AND 	(CONVERT(INT, SC07013) = 49"				-- XUAT BAN
--		+ "  OR		(CONVERT(INT, SC07013) NOT IN (66) AND SC07004 > 0))"	--TRA HANG TRONG STOCK ISSUED VOI SO LUONG AM
--		+ "  AND	(CONVERT(INT, SC07013) NOT IN (66) AND SC07004 > 0))"	--TRA HANG TRONG STOCK ISSUED VOI SO LUONG AM
--		+ "  AND 	SC07009 BETWEEN '" + @WareCodeFrom + "' AND '" + @WareCodeTo + "'"
	--	+ "  AND	SL03005 BETWEEN '" + CONVERT(NVARCHAR(10),@FromDate,112) + "'"
		--+ "  AND	'" + CONVERT(NVARCHAR(10),@ToDate,112) + "'"
+" and SC07056 in (select SoHoaDon from tbBangLuuHoaDonChoTPXuat)"
		+ "  AND 	SUBSTRING(SC07012,49,2) <> '92'"             
--if @CustCodeFrom<>''
--SET @SqlStr =@SqlStr  + " and SC07006 between '" +@CustCodeFrom+"' and '"+@CustCodeTo+"'"
--
if @StockFrom <>''
SET @SqlStr =@SqlStr  + " and  SC07003 between '" +@StockFrom+"' and '"+@StockTo+"'"


		SET @SqlStr =@SqlStr  + "  ORDER BY 	SC01002"
print @SqlStr
		EXECUTE sp_executesql @SqlStr

--SELECT * FROM tbThanhPhamXuat ORDER BY SO_DON_HANG

 
/*
	UPDATE 	tbThanhPhamXuat
	SET 	THANH_TIEN_VON = SO_LUONG * GIA_VON
*/
	SET @SqlStr = "	UPDATE tbThanhPhamXuat"
		+ " SET		SO_HOA_DON  =	OR20021"
		+ "		,TI_LE_CK   = 	OR20051"
		+ "		,NGAY_HOA_DON   = 	OR20022"
		+ " FROM 	tbThanhPhamXuat, OR20" + @CompID + "00"
		+ " WHERE 	SO_DON_HANG = OR20001"


		EXECUTE sp_executesql @SqlStr
/*
SELECT * FROM tbThanhPhamXuat
WHERE SO_DON_HANG = '0309000040'
*/
	UPDATE tbThanhPhamXuat
	SET 	SO_HOA_DON 	= 	SO_DON_HANG
	WHERE 	SO_HOA_DON  = 	''


	-----------------------------------
	--GIA DUOI KHO KHAC TREN DON HANG--
	-----------------------------------

	UPDATE tbThanhPhamXuat
	SET DON_GIA_BAN = 0
	WHERE SO_HOA_DON = '08/0109319'

	UPDATE tbThanhPhamXuat
	SET DON_GIA_BAN = 368.6
	WHERE SO_HOA_DON = '08/083294'
	
	DELETE tbThanhPhamXuat
	WHERE SO_DON_HANG = '08/076853' --ĐIỀU CHỈNH HỦY HĐ CỦA THÁNG KHÁC
	-----------------------------------


	UPDATE 	tbThanhPhamXuat
	SET 	THANH_TIEN = SO_LUONG * ROUND(DON_GIA_BAN, 2)

	SET @SqlStr = "	UPDATE tbThanhPhamXuat"
		+ " SET		GHI_CHU  =	OR22008"
		+ " FROM 	tbThanhPhamXuat, OR22" + @CompID + "00"
		+ " WHERE 	SO_DON_HANG = OR22001"


		EXECUTE sp_executesql @SqlStr

--	SET @SqlStr = " UPDATE tbThanhPhamXuat"                                  -- bo 5/8/09
----		+ " SET 	TEN_NV = GL03003"--, MO_TA = GL03004"                -- doan nay
--		+ " FROM	tbThanhPhamXuat, GL03" + @CompID + @FYear                --
----		+ " WHERE	LOAI_NV = GL03002"                                   --  
--		+ " AND 	GL03001 = 'J'"                                           --
--
--		EXECUTE sp_executesql @SqlStr                                        --

	---------------------------------------------------
	 /* Dinh nghia bang tam luu don vi tinh (Unit) */
	---------------------------------------------------
	IF EXISTS(SELECT name FROM sysobjects WHERE name = 'tbUnitText_ThahPhamXuat')
		DROP TABLE tbUnitText_ThahPhamXuat

	DECLARE @dem AS INT
	SET @dem = 1

	CREATE TABLE tbUnitText_ThahPhamXuat
	(
		idcol int primary key
		,UnitText nvarchar(50)
	)
	
	SET @dem = 0
	WHILE @dem <= 40
	  BEGIN
		IF @dem <= 7
			SET @SqlStr = " INSERT INTO tbUnitText_ThahPhamXuat "
						+ " SELECT '" + CONVERT(nvarchar, @dem)  + "', SC0900" + CONVERT(nvarchar,(@dem + 2)) 
						+ " FROM SC09" + @CompID + "00 WHERE SC09001 = 'AME'"
		ELSE
			SET @SqlStr = "INSERT INTO tbUnitText_ThahPhamXuat "
						+ " SELECT '" + CONVERT(nvarchar, @dem)  + "', SC090" + CONVERT(nvarchar,(@dem + 2)) 
						+ " FROM SC09" + @CompID + "00 WHERE SC09001 = 'AME'"
	
		EXECUTE sp_executesql @SqlStr
		SET @dem = @dem + 1
	  END

	UPDATE tbThanhPhamXuat
	SET 	DON_VI_TINH = UnitText
	FROM	tbThanhPhamXuat, tbUnitText_ThahPhamXuat
	WHERE 	DON_VI_TINH = idcol



	SET @SqlStr = " UPDATE tbThanhPhamXuat"
		+ " SET	TAI_KHOAN_DU = SUBSTRING(SL04006, 1, 4)"
		+ " FROM	tbThanhPhamXuat, SL04" + @CompID + @FYear	--CO DINH MA CONG TY, NAM TAI CHINH	
		+ " WHERE 	SO_HOA_DON = SL04013"
		+ " AND		LEFT(SL04006,4) IN ('5112', '5122', '5312','5111')"


		EXECUTE sp_executesql @SqlStr


	SET @SqlStr = " UPDATE tbThanhPhamXuat"
		+ " SET	TAI_KHOAN_DU = SUBSTRING(GL06001, 1, 4)"
		+ " FROM	tbThanhPhamXuat, GL06" + @CompID + @FYear	--CO DINH MA CONG TY, NAM TAI CHINH	
		+ " WHERE 	SO_HOA_DON = GL06007"
		+ " AND		LEFT(GL06001,4) IN ('5112', '5122', '5312','5111')"
		+ " AND		TAI_KHOAN_DU = ''"


		EXECUTE sp_executesql @SqlStr


	-------------------------------------
	--DON GIA = 0 LA HOA DON KHUYEN MAI, UPDATE LAI TK--
	-------------------------------------
	UPDATE tbThanhPhamXuat 
	SET TAI_KHOAN_DU = '5122'
	WHERE DON_GIA_BAN = 0

	-----------------------------------------------
	--UPDATE TAI KHOAN DO MAT BUT TOAN TRONG SL04--
	-----------------------------------------------

	UPDATE tbThanhPhamXuat 
	SET TAI_KHOAN_DU = '5112'
	WHERE SO_HOA_DON = '08/112567'

	-------------------------------------
		--GET RESULT--
	-------------------------------------
	SELECT *--MA_HANG, TEN_HANG, QUY_CACH, DON_VI_TINH, TAI_KHOAN_DU, SUM(SO_LUONG) AS SO_LUONG, SUM(THANH_TIEN) AS THANH_TIEN
	FROM tbThanhPhamXuat
order by MA_HANG
--	WHERE SO_HOA_DON = '08/153030'
--	WHERE TAI_KHOAN_DU <> '' --AND THANH_TIEN <> 0
--	AND MA_HANG = 'A0245'
--	GROUP BY MA_HANG, TEN_HANG, QUY_CACH, DON_VI_TINH, TAI_KHOAN_DU
--	ORDER BY TAI_KHOAN_DU

	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[tbThanhPhamXuat]')
						AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
				DROP TABLE [dbo].[tbThanhPhamXuat]
	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[tbSupplier]')
						AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
				DROP TABLE [dbo].[tbSupplier]

END
1 báo cáo khác cũng làm treo máy : Báo cáo xuất nhập tồn kho (có thêm giá trị) dành cho Kế toán. Code:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

----*******************************************----
--Made Date:		01/01/2005
--Updating Date:	19/04/2007	( Version:1000.0002 ) 
--For Purpose: 		Bao Cao Xuat Nhap Ton -> For Design Template
--For Company:	 	Designed Template
--Description:		In this store procedure, we used three tables such as
					-- SC07 -> Stock Transaction File I/O 
					-- SC09 -> Get Unit of Measure
	--Note: 		
		-- @Para1	nvarchar(50)	-- @CompID
		--,@Para2	nvarchar(50)	-- @FYear 
		--,@Para3	nvarchar(50)	-- @Language
		--,@Para4	nvarchar(50)	-- @StockFrom
		--,@Para5	nvarchar(50)	-- @StockTo	
		--,@Para6	nvarchar(50)	--,@WHFrom	
		--,@Para7	nvarchar(50)	--,@WHTo  	
		--,@Para8	nvarchar(50)	--,@DateFrom
		--,@Para9	nvarchar(50)	--,@DateTo  
----*******************************************----
ALTER                     PROCEDURE [dbo].[SC_XuatNhapTon_KeToan]
	 @Para1	nvarchar(50)	-- @CompID  	
	,@Para2	nvarchar(50)	-- @FYear  		
	,@Para3	nvarchar(50)	-- @Language 	
	,@Para4 nvarchar(50)	-- @StockFrom	
	,@Para5 nvarchar(50)	-- @StockTo		
	,@Para6 nvarchar(50)	--,@WHFrom		
	,@Para7	nvarchar(50)	--,@WHTo  		
	,@Para8	nvarchar(50)	--,@DateFrom  	
	,@Para9	nvarchar(50)	--,@DateTo  	
WITH RECOMPILE
-- [XuatNhapTon_KeToan] '01','10','AME','A0144','A0144','K1','KTGC12','100401','100430'
AS
BEGIN
/* ************************************************* */
DECLARE @CompID		AS NVARCHAR(50)	SET @CompID		=	@Para1
DECLARE @FYear		AS NVARCHAR(50)	SET @FYear		=	@Para2
DECLARE @Language	AS NVARCHAR(50)	SET @Language	=	@Para3
DECLARE @StockFrom	AS NVARCHAR(50) SET @StockFrom	= 	@Para4
DECLARE @StockTo	AS NVARCHAR(50) SET @StockTo	=	@Para5
DECLARE @WHFrom		AS NVARCHAR(50) SET @WHFrom 	=	@Para6
DECLARE @WHTo		AS NVARCHAR(50)	SET @WHTo		=	@Para7
DECLARE @DateFrom	AS NVARCHAR(50)	SET @DateFrom	=	@Para8
DECLARE @DateTo		AS NVARCHAR(50)	SET @DateTo		=	@Para9

DECLARE @SqlStr as nvarchar(4000)
DECLARE @dem as INT 
SET @dem = 0

SET ANSI_WARNINGS OFF
SET ARITHABORT OFF
SET QUOTED_IDENTIFIER OFF

END

BEGIN

	CREATE TABLE #TempUnitTable
	(
		idcol int PRIMARY KEY,
		UnitText nvarchar(512)
	)
--DROP TABLE #tbStock
IF EXISTS (	SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[#tbStock]') 
			AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	DROP TABLE [dbo].[#tbStock]

IF EXISTS (	SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[#tbStockEnd]') 
			AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	DROP TABLE [dbo].[#tbStockEnd]

IF EXISTS (	SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[#tbStockBegin]') 
			AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	DROP TABLE [dbo].[#tbStockBegin]
--DROP TABLE QRYTMP_StockImMid
IF EXISTS (	SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[tbStockImMid]') 
			AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	DROP TABLE [dbo].[tbStockImMid]

--DROP TABLE QRYTMP_StockExMid
IF EXISTS (	SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[tbStockExMid]') 
			AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	DROP TABLE [dbo].[tbStockExMid]

	CREATE TABLE #tbStockEnd
	(
		WarehouseNo			nvarchar(50),
		WHName				nvarchar(50),
		StockCode			nvarchar(50),
		Description1		nvarchar(512),
		Description2		nvarchar(512),
		UnitConvStoc		nvarchar(50),	--DON VI TINH
		UnitCodeMPC		nvarchar(50),	--DON VI TINH NHO NHAT
		UnitConvMPC		INT,	--HE SO QUI DOI
--		LotID			nvarchar(20),	--SO LO
		ExpiryDate		DATETIME,
		UserDefFld1		NVARCHAR(50),	--SO PHIEU KIEM NGHIEM
		UserDefFld2		NVARCHAR(50),	--DO AM
		UserDefFld3		NVARCHAR(50),	--HAM LUONG
		ImQtyMid		numeric(30,4),	--SO LUONG HANG NHAP
		ImTransfPrice1Mid 	numeric(30,4),	--GIA TIEN HANG NHAP
		ExQtyMid		numeric(30,4),	--SO LUONG HANG XUAT
		ExTransfPrice1Mid	numeric(30,4),	--GIA TIEN HANG XUAT
		QtyEnd			numeric(30,4),	--SO LUONG HANG CON LAI TRONG KHO
		TransfPrice1End		numeric(30,4),	--GIA TIEN HANG CON LAI TRONG KHO
		CurrName 		nvarchar(50),
		FromDate		datetime,
		ToDate			datetime
	,QtyBegin			numeric(30,4)
,	TransfPrice1Begin		numeric(30,4)
	)

	CREATE TABLE #tbStockBegin
	(
		WarehouseNo			nvarchar(50),
		WHName				nvarchar(50),
		StockCode			nvarchar(50),
		Description1		nvarchar(512),
		Description2		nvarchar(512),
		UnitConvStoc		nvarchar(50),	--DON VI TINH
		UnitCodeMPC		nvarchar(50),	--DON VI TINH NHO NHAT
		UnitConvMPC		INT,	--HE SO QUI DOI
--		LotID			nvarchar(20),	--SO LO
		ExpiryDate		DATETIME,
		UserDefFld1		NVARCHAR(50),	--SO PHIEU KIEM NGHIEM
		UserDefFld2		NVARCHAR(50),	--DO AM
		UserDefFld3		NVARCHAR(50),	--HAM LUONG
		ImQtyMid		numeric(30,4),	--SO LUONG HANG NHAP
		ImTransfPrice1Mid 	numeric(30,4),	--GIA TIEN HANG NHAP
		ExQtyMid		numeric(30,4),	--SO LUONG HANG XUAT
		ExTransfPrice1Mid	numeric(30,4),	--GIA TIEN HANG XUAT
		QtyBeGin			numeric(30,4),	--SO LUONG HANG CON LAI dau ki TRONG KHO
		TransfPrice1Begin		numeric(30,4),	--GIA TIEN HANG CON LAI TRONG KHO
		CurrName 		nvarchar(50),
		FromDate		datetime,
		ToDate			datetime
	)
----*******************************************----
--Insert the Unit Text into the temporary table
----*******************************************----
WHILE @dem < 40
	BEGIN
		INSERT INTO #TempUnitTable (idcol, UnitText) VALUES (@dem,' ')
      	SET @dem = @dem + 1
	END

SET @dem = 0

WHILE @dem < 8
	BEGIN
		SET @SqlStr = " UPDATE #TempUnitTable "
					+ " SET #TempUnitTable.UnitText = T1.SC0900" + convert(nvarchar(3), @dem + 2)
					+ " FROM #TempUnitTable, SC09" + @CompID + "00 T1"
					+ " WHERE T1.SC09001 = '" + @Language + "'"
					+ " AND #TempUnitTable.idcol = " + convert(nvarchar(3), @dem)
       	EXECUTE  sp_executesql @SqlStr 		
		SET @dem = @dem + 1
	END 

WHILE @dem < 40
	BEGIN
		SET @SqlStr = " UPDATE #TempUnitTable "
					+ " SET #TempUnitTable.UnitText = T1.SC090" + convert(nvarchar(3), @dem + 2) 
					+ " FROM #TempUnitTable, SC09" + @CompID + "00 T1"
					+ " WHERE T1.SC09001 = '" + @Language + "'"
					+ " AND #TempUnitTable.idcol = " + convert(nvarchar(3), @dem)
       	EXECUTE  sp_executesql @SqlStr 		
		SET @dem = @dem + 1
	END
	
----*******************************************----
	----tbTmp lay du lieu hoan toan tu bang SC07	
	----nhung duoc cap nhat lai voi TransPrice theo TransType
	----*******************************************----
	CREATE TABLE #tbStock
	(
		WareNo		nvarchar(50) collate Latin1_General_BIN,
		WareNoTo		nvarchar(50) collate Latin1_General_BIN,
		TransDate			datetime ,
		TransType			nvarchar(50) collate Latin1_General_BIN,
		StockCode		nvarchar(512) collate Latin1_General_BIN,
		LotID		nvarchar(512) collate Latin1_General_BIN,
		Qty		numeric(30,4),
		TransPrice	numeric(30,4),	
		Amount		NUMERIC(30,4),
		Reference		nvarchar(50) collate Latin1_General_BIN ,
		OrderNumber		nvarchar(50) collate Latin1_General_BIN ,
		Invoice		NVARCHAR(50)	collate Latin1_General_BIN ,
		Receiver		NVARCHAR(50)	collate Latin1_General_BIN ,
		GLTransaction		NVARCHAR(50)	collate Latin1_General_BIN 
	)
	SET @SqlStr = " SELECT "
				+ "  T2.SC07009 	WareNo"
				+ ", T2.SC07027 	WareNoTo"
				+ ", T2.SC07002 	TransDate"
				+ ", T2.SC07001		TransType"
				+ ", T2.SC07003 	StockCode"
				+ ", T2.SC07021		LotID"
--				+ ", T2.SC07021		BatchID"
				+ ", T2.SC07004 	Qty"
				+ ", T2.SC07005 	TransPrice"
				+ ", T2.SC07005*T2.SC07004	Amount"
				+ ", T2.SC07007		Reference"
				+ ", T2.SC07006		OrderNumber"
				+ ", T2.SC07056		Invoice"
				+ ", T2.SC07011		Receiver"
				+ ", T2.SC07020		GLTransaction"
--				+ "	 INTO #tbStock"
				+ " FROM SC07" + @CompID + "00 T2"
				+ " WHERE	T2.SC07009 BETWEEN '" + @WHFrom + "' AND '" + @WHTo + "'"
				+ " AND	T2.SC07003 BETWEEN '" + @StockFrom + "' AND '" + @StockTo + "'"
				+ " AND T2.SC07002 <= '" + CONVERT(nvarchar(50), @DateTo, 112) + "'"
--				+ " AND T2.SC07006 <> 'DDCK2008'"
				+ " ORDER BY T2.SC07003, T2.SC07002  ASC"

	insert #tbStock execute sp_executesql @SqlStr
PRINT @SqlStr

--XOA DI CAC DONG CHUYEN KHO TU KN->KT HOAC KT->KN : HANG  KIEM NGHIEM 
--DELETE #tbStock
--SELECT * FROM #tbStock
-- WHERE Reference = 'X0513/09'

--SELECT * FROM #tbStock WHERE StockCode = 'B0131'



--SELECT * FROM #tbStock WHERE StockCode = 'B0027'

--delete #tbStock where Reference = 'DD001/08'-- OR OrderNumber = 'DDCK2009'

--SELECT * FROM #tbStock WHERE StockCode = 'C0047'
--	SET @SqlStr = "	UPDATE #tbStock"
--				+ "    SET TransDate = PL03005"
--				+ "	  FROM PL03" + @CompID + "00"
--				+ "  WHERE Invoice = PL03002 AND Receiver = PL03001"
--	execute sp_executesql @SqlStr


	UPDATE #tbStock
	SET Amount = TransPrice
	WHERE TransType = '03' OR TransType = '10'
	
	UPDATE #tbStock
	SET Amount = (-1)* TransPrice
	WHERE TransType = '07'

--SELECT * FROM #tbStock WHERE StockCode = 'B0651' --AND (TransType = '01' OR (TransType = '04' AND Qty < 0))

	----*******************************************----
	----##tbStockEnd tính số lượng và giá cuối kỳ
	----Bang nay la bang chính để lấy dữ liệu
	----*******************************************----
	
	SET @SqlStr = " INSERT INTO #tbStockEnd "
				+ "  SELECT DISTINCT"
				+ "  T2.WareNo "
				+ ", T3.SC23002 "
				+ ", T2.StockCode "
				+ ", T1.SC01002 	Description1"
				+ ", SUBSTRING(T1.SC01003, 1, ABS(CHARINDEX('TH',T1.SC01003,1) - 1)) 	Description2"
				+ ", T4.UnitText  	UnitText"
--				+ ", T2.LotID		LotID"
				+ ", T1.SC01136		UnitCodeMPC"
				+ ", T1.SC01142		UnitConvMPC"
				+ ", NULL"
				+ ", ' '"
				+ ", ' '"
				+ ", ' '"
				+ ", 0   "
				+ ", 0   "
				+ ", 0   "
				+ ", 0   "
				+ ", SUM(T2.Qty)  "
				+ ", SUM(T2.Amount) "
				+ ", SY.SYCD009  CurrName" 
				+ ", '" + CONVERT(nvarchar(50), @DateFrom, 1) + "'"
				+ ", '" + CONVERT(nvarchar(50), @DateTo, 1) + "'"
+",0"
+",0"
				+ "  FROM SC01" + @CompID + "00 T1, #tbStock T2"
				+ ", SC23" + @CompID + "00 T3, #TempUnitTable T4"
				+ ", SYCD" + @CompID + "00 SY"
				+ " WHERE	T2.WareNo BETWEEN '" + @WHFrom + "' AND '" + @WHTo + "'"
				+ " AND	T2.StockCode BETWEEN '" + @StockFrom + "' AND '" + @StockTo + "'"
				+ " AND T2.WareNo =  T3.SC23001"
				+ " AND T1.SC01001 = T2.StockCode"
				+ " AND T2.TransDate  <= '" + CONVERT(nvarchar(50), @DateTo, 112) + "'"
				+ " AND T4.idcol = T1.SC01133"
				+ " AND SY.SYCD001 = 0 "
				+ " GROUP BY T2.StockCode, T2.WareNo, T3.SC23002, T1.SC01002, T1.SC01003,"
				+ " T1.SC01136, T1.SC01142, T4.UnitText, SY.SYCD009"--- T2.LotID"
				+ " ORDER BY T2.StockCode ASC"
	EXECUTE sp_executesql @SqlStr

--SELECT * FROM #tbStockEnd
	SET @SqlStr = " INSERT INTO #tbStockBegin "
				+ "  SELECT DISTINCT"
				+ "  T2.WareNo "
				+ ", T3.SC23002 "
				+ ", T2.StockCode "
				+ ", T1.SC01002 	Description1"
				+ ", SUBSTRING(T1.SC01003, 1, ABS(CHARINDEX('TH',T1.SC01003,1) - 1)) 	Description2"
				+ ", T4.UnitText  	UnitText"
--				+ ", T2.LotID		LotID"
				+ ", T1.SC01136		UnitCodeMPC"
				+ ", T1.SC01142		UnitConvMPC"
				+ ", NULL"
				+ ", ' '"
				+ ", ' '"
				+ ", ' '"
				+ ", 0   "
				+ ", 0   "
				+ ", 0   "
				+ ", 0   "
				+ ", SUM(T2.Qty)  "
				+ ", SUM(T2.Amount) "
				+ ", SY.SYCD009  CurrName" 
				+ ", '" + CONVERT(nvarchar(50), @DateFrom, 1) + "'"
				+ ", '" + CONVERT(nvarchar(50), @DateTo, 1) + "'"
				+ "  FROM SC01" + @CompID + "00 T1, #tbStock T2"
				+ ", SC23" + @CompID + "00 T3, #TempUnitTable T4"
				+ ", SYCD" + @CompID + "00 SY"
				+ " WHERE	T2.WareNo BETWEEN '" + @WHFrom + "' AND '" + @WHTo + "'"
				+ " AND	T2.StockCode BETWEEN '" + @StockFrom + "' AND '" + @StockTo + "'"
				+ " AND T2.WareNo =  T3.SC23001"
				+ " AND T1.SC01001 = T2.StockCode"
				+ " AND T2.TransDate  < '" + CONVERT(nvarchar(50), @DateFrom, 112) + "'"
				+ " AND T4.idcol = T1.SC01133"
				+ " AND SY.SYCD001 = 0 "
				+ " GROUP BY T2.StockCode, T2.WareNo, T3.SC23002, T1.SC01002, T1.SC01003,"
				+ " T1.SC01136, T1.SC01142, T4.UnitText, SY.SYCD009"--- T2.LotID"
				+ " ORDER BY T2.StockCode ASC"
	EXECUTE sp_executesql @SqlStr
--select * from #tbStockBegin
print @SqlStr
DELETE #tbStock
 WHERE ((WareNo = 'KN' AND WareNoTo = 'KT') OR (WareNo = 'KT' AND WareNoTo = 'KN') 
		OR (WareNo = 'KB' AND WareNoTo = 'KT') OR (WareNo = 'KB' AND WareNoTo = 'KT')) 
   AND Receiver = '20' 
AND TransDate BETWEEN '20090201' AND '20091230'

	----*******************************************----
	----tbStockImMid tính số lượng và giá nhập trong kỳ
	----ĐK: theo TransType
	----*******************************************----

	SET @SqlStr = "	 SELECT DISTINCT"
				+ "  T2.WareNo  	WarehouseNo"
				+ ", T2.StockCode 	StockCode"
				+ ", T1.SC01002		Description1"
				+ ", SUBSTRING(T1.SC01003, 1, ABS(CHARINDEX('TH',T1.SC01003,1) - 1))		Description2"
				+ ", T4.UnitText	UnitText"
--				+ ", T2.LotID	 	LotID"	
				+ ", T1.SC01136		UnitCodeMPC"
				+ ", T1.SC01142		UnitConvMPC"			
				+ ", SUM(T2.Qty)   	Qty"
				+ ", SUM(round(T2.Amount,4)) Amount"
				+ ", 0   			ExQty"
				+ ", 0   			ExAmount"
				+ ", 0   			EndQty"
				+ ", 0   			EndAmount"
				+ ", SY.SYCD009			CurrName" 
--				+ ", T2.GLTransaction	GLTransaction"
				+ ", '" + CONVERT(nvarchar(50), @DateFrom, 1) + "'		DateFrom"
				+ ", '" + CONVERT(nvarchar(50), @DateTo, 1) + "'		DateTo"
				+ "	 INTO tbStockImMid"
				+ "  FROM  SC01" + @CompID + "00 T1, #tbStock T2"
				+ ", SC23" + @CompID + "00 T3, #TempUnitTable T4"
				+ ", SYCD" + @CompID + "00 SY"
				+ " WHERE T2.WareNo BETWEEN '" + @WHFrom + "' AND '" + @WHTo + "'"
				+ " AND	T2.StockCode BETWEEN '" + @StockFrom + "' AND '" + @StockTo + "'"
				+ " AND T2.WareNo =  T3.SC23001"
				+ " AND T1.SC01001 = T2.StockCode"
				+ " AND T4.idcol = T1.SC01133"
				+ " AND SY.SYCD001 = 0 "
				+ "	AND (T2.TransType IN ('00','03') OR (T2.Qty > 0 AND T2.TransType = '04')"	--Điều kiện để lấy 
				+ "	OR (T2.TransType = '02' AND T2.Qty > 0))"						--hàng nhập kho
--				+ "	OR (T2.TransType = '01' AND T2.Qty > 0))"	
				+ " AND T2.TransDate  >= '" + CONVERT(nvarchar(50), @DateFrom, 112) + "'"
				+ " AND T2.TransDate  <= '" + CONVERT(nvarchar(50), @DateTo, 112) + "'"
				+ " GROUP BY T2.StockCode, T2.WareNo, T3.SC23002, T1.SC01002, T1.SC01003,"
				+ " T1.SC01136, T1.SC01142, T4.UnitText, SY.SYCD009"--, T2.GLTransaction"--, T2.LotID"
				+ " ORDER BY T2.StockCode ASC"
	EXECUTE sp_executesql @SqlStr

	--SELECT * FROM tbStockImMid --WHERE StockCode LIKE 'A0281%' --AND WarehouseNo = 'KN'
--	AND SC25002 = GLTransaction 


	----*******************************************----
	----tbStockExMid tính số lượng và giá xuất trong kỳ
	----ĐK: theo TransType
	----*******************************************----
	SET @SqlStr = "	 SELECT DISTINCT"
				+ "  T2.WareNo  	WarehouseNo"
				+ ", T2.StockCode 	StockCode"
				+ ", T1.SC01002		Description1"
				+ ", SUBSTRING(T1.SC01003, 1, ABS(CHARINDEX('TH',T1.SC01003,1) - 1))		Description2"
				+ ", T4.UnitText	UnitText"
				+ ", T1.SC01136		UnitCodeMPC"
				+ ", T1.SC01142		UnitConvMPC"
--				+ ", T2.LotID	 	LotID"				
				+ ", 0   			ImQty"
				+ ", 0   			ImAmount"
				+ ", SUM(T2.Qty)   	Qty"
				+ ", SUM(round(T2.Amount,4)) Amount"
				+ ", 0   			EndQty"
				+ ", 0   			EndAmount"
				+ ", SY.SYCD009  CurrName" 
				+ ", '" + CONVERT(nvarchar(50), @DateFrom, 1) + "'		DateFrom"
				+ ", '" + CONVERT(nvarchar(50), @DateTo, 1) + "'		DateTo"
				+ "	 INTO tbStockExMid"
				+ "  FROM   SC01" + @CompID + "00 T1, #tbStock T2"
				+ ", SC23" + @CompID + "00 T3, #TempUnitTable T4"
				+ ", SYCD" + @CompID + "00 SY"
				+ " WHERE	T2.WareNo BETWEEN '" + @WHFrom + "' AND '" + @WHTo + "'"
				+ " AND	T2.StockCode BETWEEN '" + @StockFrom + "' AND '" + @StockTo + "'"
				+ " AND T2.WareNo =  T3.SC23001"
				+ " AND T1.SC01001 = T2.StockCode"
				+ " AND T4.idcol = T1.SC01133"
				+ " AND SY.SYCD001 = 0 "	
				+ " 	AND (T2.TransType IN ('01','07','10') OR (T2.Qty < 0 AND T2.TransType = '04')"		--Điều kiện để lấy
				+ "	OR (T2.TransType = '02' AND T2.Qty < 0))"
--				+ " OR (T2.TransType = '01' AND T2.Qty < 0))"							--hàng xuất kho
				+ " AND T2.TransDate  >= '" + CONVERT(nvarchar(50), @DateFrom, 112) + "'"
				+ " AND T2.TransDate  <= '" + CONVERT(nvarchar(50), @DateTo, 112) + "'"
				+ " GROUP BY T2.StockCode, T2.WareNo, T3.SC23002, T1.SC01002, T1.SC01003,"
				+ " T1.SC01136, T1.SC01142, T4.UnitText, SY.SYCD009"--, T2.LotID"
				+ " ORDER BY T2.StockCode ASC"
	EXECUTE sp_executesql @SqlStr

--SELECT * FROM tbStockExMid WHERE StockCode = 'A0281'

	--Them điều kiện kết LotID- 
	UPDATE #tbStockEnd
	SET #tbStockEnd.ImQtyMid = tbStockImMid.Qty
	,#tbStockEnd.ImTransfPrice1Mid = tbStockImMid.Amount
	FROM #tbStockEnd, tbStockImMid
	WHERE #tbStockEnd.WarehouseNo collate Latin1_General_BIN = tbStockImMid.WarehouseNo

	AND #tbStockEnd.StockCode collate Latin1_General_BIN = tbStockImMid.StockCode 
--	AND #tbStockEnd.LotID = tbStockImMid.LotID	--LotID
	
	UPDATE #tbStockEnd
	SET #tbStockEnd.ExQtyMid = tbStockExMid.Qty
	,#tbStockEnd.ExTransfPrice1Mid = tbStockExMid.Amount
	FROM #tbStockEnd, tbStockExMid
	WHERE #tbStockEnd.WarehouseNo collate Latin1_General_BIN = tbStockExMid.WarehouseNo
	AND #tbStockEnd.StockCode collate Latin1_General_BIN = tbStockExMid.StockCode 


	UPDATE #tbStockEnd
	SET #tbStockEnd.QtyBegin = #tbStockBegin.QtyBegin
	,#tbStockEnd.TransfPrice1Begin = #tbStockBegin.TransfPrice1Begin
	FROM #tbStockEnd, #tbStockBegin
	WHERE #tbStockEnd.WarehouseNo collate Latin1_General_BIN = #tbStockBegin.WarehouseNo
	AND #tbStockEnd.StockCode collate Latin1_General_BIN = #tbStockBegin.StockCode 
--	AND #tbStockEnd.LotID = tbStockExMid.LotID	--LotID

	--UPDATE NEU HS QUI DOI = 0--
/*
	UPDATE #tbStockEnd
	SET UnitConvMPC = 1
	WHERE UnitConvMPC = 0

	--NHAN SL VOI HE SO QUI DOI--
	UPDATE #tbStockEnd
	SET ImQtyMid = ImQtyMid * UnitConvMPC, 
	    ExQtyMid = ExQtyMid * UnitConvMPC,
	    QtyEnd = QtyEnd * UnitConvMPC
	    */

	--NHAN SL VOI HE SO QUI DOI--
/*
	UPDATE #tbStockEnd
	SET ImQtyMid = ImQtyMid * ISNULL(QDGBB, 1), 
	    ExQtyMid = ExQtyMid * ISNULL(QDGBB, 1),
	    QtyEnd = QtyEnd * ISNULL(QDGBB, 1)
	FROM 	#tbStockEnd, SCGCD0000
	WHERE StockCode = MAHH

*/
	UPDATE #tbStockEnd
	SET UnitCodeMPC = ( SELECT UnitText FROM #TempUnitTable	WHERE UnitCodeMPC = idcol)

	--UPDATE Do am, ham luong, Phieu KN	--

	--UPDATE MA PHAN XUONG, TEN PHAN XUONG--

	SET @SqlStr = " UPDATE #tbStockEnd"
		    + " SET UserDefFld1 = SC01010"
		    + " FROM #tbStockEnd, SC01" + @CompID + "00" 
		    + " WHERE StockCode collate Latin1_General_BIN = SC01001"

	EXECUTE sp_executesql @SqlStr

	SET @SqlStr = " UPDATE #tbStockEnd"
		    + " SET UserDefFld1 = SY24003"
		    + " FROM #tbStockEnd, SY24" + @CompID + "00" 
		    + " WHERE UserDefFld1 collate Latin1_General_BIN = SY24002"
		    + " AND 	SY24001 = 'IQ'"

	EXECUTE sp_executesql @SqlStr

	---------------------------------------


/*
	SET @SqlStr = " UPDATE #tbStockEnd"
		    + " SET LotID = SC33009"
		    + " FROM #tbStockEnd, SC33" + @CompID + "00" 
		    + " WHERE WarehouseNo = SC33002 AND StockCode = SC33001 AND LotID = SC33003"

	EXECUTE sp_executesql @SqlStr
*/
	--**********GET RESULT*************--
/*SELECT WarehouseNo, WHName, StockCode, Description1, Description2, UnitConvStoc
			,LotID, ExpiryDate, UserDefFld1, UserDefFld2, UserDefFld3,
			SUM(ImQtyMid) as ImQtyMid, SUM(ExQtyMid) AS ExQtyMid, SUM(QtyEnd) AS QtyEnd, CurrName, FromDate, ToDate
		FROM #tbStockEnd
		WHERE ImQtyMid <> 0.0 OR ExQtyMid <> 0.0 OR QtyEnd <> 0.0
		group by WarehouseNo, WHName, StockCode, Description1, Description2, UnitConvStoc
			,LotID, ExpiryDate, UserDefFld1, UserDefFld2, UserDefFld3, CurrName, FromDate, ToDate
--		AND LotID = '0030408'
*/

	IF @StockFrom LIKE 'A%'
		SELECT *
		FROM #tbStockEnd
		WHERE (ImQtyMid <> 0.0 OR ExQtyMid <> 0.0 OR QtyEnd <> 0.0
				OR ImTransfPrice1Mid <> 0.0 OR ExTransfPrice1Mid <> 0.0 OR TransfPrice1End <> 0.0)
		AND WarehouseNo IN ('K1','K2','K8','K13','K6','K9','K14','K7')
	ELSE 
		SELECT *
		FROM #tbStockEnd
		WHERE (ImQtyMid <> 0.0 OR ExQtyMid <> 0.0 OR QtyEnd <> 0.0 
				OR ImTransfPrice1Mid <> 0 OR ExTransfPrice1Mid <> 0 OR TransfPrice1End <> 0)

	
SELECT StockCode,ImTransfPrice1Mid
		FROM #tbStockEnd
		WHERE (ImTransfPrice1Mid <> 0.0  )

--SELECT StockCode, SUM(ExTransfPrice1Mid)  FROM #tbStockEnd --WHERE TransDate BETWEEN '090301' AND '090331'
--GROUP BY StockCode
--SELECT StockCode, SUM(ExTransfPrice1Mid)  FROM #tbStockEnd --WHERE TransDate BETWEEN '090301' AND '090331'
--w
--GROUP BY StockCode
--SELECT * FROM #tbStock WHERE TransDate BETWEEN '090601' AND '090630' AND StockCode = 'B0005'

	DROP TABLE #tbStock
	DROP TABLE #tbStockEnd
	DROP TABLE tbStockImMid
	DROP TABLE tbStockExMid
--DROP TABLE tbStock
IF EXISTS (	SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[#tbStock]') 
			AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	DROP TABLE [dbo].[#tbStock]

IF EXISTS (	SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[#tbStockEnd]') 
			AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	DROP TABLE [dbo].[#tbStockEnd]

--DROP TABLE QRYTMP_StockImMid
IF EXISTS (	SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[tbStockImMid]') 
			AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	DROP TABLE [dbo].[tbStockImMid]

--DROP TABLE QRYTMP_StockExMid
IF EXISTS (	SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[tbStockExMid]') 
			AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
	DROP TABLE [dbo].[tbStockExMid]

END

--[XuatNhapTon_KeToan] '01','09','AME','B0001','B9999','KN','KN','090801','090831'
]]>
/hvaonline/posts/preList/35132/215951.html#215951 /hvaonline/posts/preList/35132/215951.html#215951 GMT
Cần ai hiểu sâu về SQL Server giúp đỡ tìm nguyên nhân SQL chậm

cvhainb wrote:
Mình chỉ có thể góp ý thêm một chút về các vấn đề về truy vấn (query). Đối với package lớn như bạn mô tả thì việc các câu truy vấn dữ liệu như thế nào cũng rất quan trọng. Với dữ liệu lớn mà báo cáo khi in ra là trong khoảng thời gian là 1, 2 năm thì việc treo máy cũng là thường. Để dễ dàng bạn chỉ nên xem lại đoạn code chỗ nhập liệu, thử xem. Thân :) 
Cám ơn bạn đã chia sẻ. Ứng dụng ERP này của 1 tập đoàn nước ngoài nên mình không có xem code chổ nhập liệu được.]]>
/hvaonline/posts/preList/35132/215947.html#215947 /hvaonline/posts/preList/35132/215947.html#215947 GMT
Cần ai hiểu sâu về SQL Server giúp đỡ tìm nguyên nhân SQL chậm

conmale wrote:
W2k3 và MSSQL này chạy phiên bản 32-bit hay 64-bit? Phương thức kết nối và "commit data" từ các applications đến CSDL cụ thể như thế nào? 
Dạ, W2k3 và SQL thì đều đang chạy 32 bit. Em không rõ lắm cách "commit data" của Application. Nhưng biết là ứng dụng gọi các COM+ App và DCOM, trong database thì em không thấy lưu các Stored Proc phục vụ insert,update,delete dữ liệu gì cả, chỉ có 1 vài stored phục vụ đăng nhập, phân quyền, ... Đây là 1 ứng dụng ERP cũng ở tầm trung và brochure thì cũng có nói là dữ liệu được mã hoá gởi giữa Client đến Server (ứng dụng chạy Client/Server). Không đề cập đến cơ chế hoạt động bên dưới nên em không được biết.

qtra004 wrote:
Ngoài những thông tin anh conmale hỏi? Bạn có thể dùng Activity Monitor trên SQL Management Studio để xem lúc application chạy report, những query gì đang chạy và những process có bị lock không? Loại lock là gì? Nếu bạn biết được sql query của process để generate report thì bạn thảy lên đây để mình xem thử xem query đó có optimised cho performance chưa?  
Mình sẽ thử xem sao, có gì sẽ post lên đây nhờ mọi người giúp đỡ. À, quên nói 1 vấn đề quan trọng là Các báo cáo mà mình đề cập bên trên là Báo cáo do công ty Customize, mình nghĩ chắc cách viết không tối ưu, gây lock table hay sao (trình độ coding của người customize báo cáo có hạn, mình cũng không rành nên đọc code cũng không tìm ra chổ nào để tối ưu được). Các báo cáo có sẵn của chương trình thì mặc dù in lâu nhưng không làm treo các máy con nhập liệu Hoá đơn. Cám ơn mọi người nhiều lắm.]]>
/hvaonline/posts/preList/35132/215942.html#215942 /hvaonline/posts/preList/35132/215942.html#215942 GMT
Cần ai hiểu sâu về SQL Server giúp đỡ tìm nguyên nhân SQL chậm /hvaonline/posts/preList/35132/215867.html#215867 /hvaonline/posts/preList/35132/215867.html#215867 GMT Máy em có 1 ổ virut: Reader_s.exe, Implayok.exe v.v và v.v /hvaonline/posts/preList/32954/203913.html#203913 /hvaonline/posts/preList/32954/203913.html#203913 GMT Virus gây ảnh hưởng đến việc gởi mail /hvaonline/posts/preList/32706/202134.html#202134 /hvaonline/posts/preList/32706/202134.html#202134 GMT Virus gây ảnh hưởng đến việc gởi mail /hvaonline/posts/preList/32706/201827.html#201827 /hvaonline/posts/preList/32706/201827.html#201827 GMT Virus làm rớt mạng, nếu không làm gì thì lát lại có ? /hvaonline/posts/preList/31423/193900.html#193900 /hvaonline/posts/preList/31423/193900.html#193900 GMT Không thể ổ đĩa theo cách bình thường

thangnhochathanh wrote:
Các bạn giúp mình vời máy mình không thể mở ổ đĩa theo cách bình thường là nhấn kép vào là mở lên được mà nó mở ra màn hình tìm kiềm. các bạn giúp mình với. Thanks  
Bạn show hết các file ẩn, kể cả các file được HĐH bảo vệ. Tìm xem có file autorun.inf thì xóa đi. Mình đoán trong file Autorun.inf này chỉ đường dẫn để gọi chương trình search.]]>
/hvaonline/posts/preList/21369/127071.html#127071 /hvaonline/posts/preList/21369/127071.html#127071 GMT
Re: TẠO LAN ĐỂ KẾT NỐI INTERNET? /hvaonline/posts/preList/21371/127067.html#127067 /hvaonline/posts/preList/21371/127067.html#127067 GMT Re: phần mềm thay thế mdaemon? /hvaonline/posts/preList/21336/127065.html#127065 /hvaonline/posts/preList/21336/127065.html#127065 GMT Re: phần mềm thay thế mdaemon?

vuahung103 wrote:

lama wrote:
Bạn vào menu Setup, Primary Domain, tab Delivery, chọn Always send every outbound email to the server specified below. Nhập các giá trị cần thiết vào Mail Server, username/pass cho Requires Authentication. Chúc bạn thành công. 
Lama cho mình hỏi thêm: Trong phần mail server thì mình biết là nhập IP của mailserver rồi. Vậy còn phần username/pass cho Requires Authentication mình sẽ phải nhập user và pass nào? Khi mình cài Mdaemon nó có bắt thiết lập 1 user làm admin và mình cũng có tạo 1 acc admin+pass, mình hỏi có phải là khai báo user này hay là user nào? Thanks! 
Đây là username/pass của 1 account mail trên Mail Server nơi bạn Hosting (bạn có thể dùng account mà bạn POP mail về đó). À, mà bạn đang dùng Mail Offline chứ ?]]>
/hvaonline/posts/preList/21336/127033.html#127033 /hvaonline/posts/preList/21336/127033.html#127033 GMT
Re: Yêu cầu sách, reupload sách vui lòng đặt câu hỏi ở đây /hvaonline/posts/preList/19573/126863.html#126863 /hvaonline/posts/preList/19573/126863.html#126863 GMT Re: phần mềm thay thế mdaemon? /hvaonline/posts/preList/21336/126858.html#126858 /hvaonline/posts/preList/21336/126858.html#126858 GMT Re: Nên học mạng ở Trường Nhất Nghệ hay Chánh nghiệp?

No_Way wrote:
ĐHQG - ĐH Khoa Học Tự Nhiên ( đối diện nhà sách Nguyễn Văn Cừ Q5, quên địa chỉ rài nhưng ko khó kiếm cứ hỏi đường lên nhà sách NVC rùi nhìn qua mé bên kia đường là nó đó :D ) Thân  
ĐH Khoa học Tự nhiên nào mà đối diện nhà sách Nguyễn Văn Cừ trời. Đối diện nhà sách Nguyễn Văn Cừ là đường An Dương Vương. :D Vì mình học ĐHKHTN ra mà. Cái trung tâm tin học ĐHKHTN nằm ngay sát trường KHTN luôn (227 Nguyễn Văn Cừ). Ở trong là đào tạo theo chương trình dài hạn : KTV, ..., ở phía trước là đào tạo theo chương trình quốc tế gì đó : MCSA, MCSE, MCDBA, .. và 1 số chương trình về lập trình viên. Riêng học MCSA thì mình nghĩ bạn nên học Nhất nghệ, mình đã học ở đây và thấy kiến thức tiếp thu được là rất nhiều. Hiện nay thì Nhất nghệ cũng là Gold Partner của Microsoft rồi. Bạn vào trang web và diễn đàn của Nhất nghệ để tham khảo thêm. Còn học CCNA thì mình nghĩ VNPRO là tốt nhất. Tuy nhiên, hơi xa nếu bạn ở trung tâm. www.nhatnghe.com/forum www.vnpro.org/forum P/S : Mình cũng là thành viên của cả 2 diễn đàn trên :^) .]]>
/hvaonline/posts/preList/21124/126271.html#126271 /hvaonline/posts/preList/21124/126271.html#126271 GMT
IP bị vô Spamhaus, mail không đến người nhận /hvaonline/posts/preList/21249/126138.html#126138 /hvaonline/posts/preList/21249/126138.html#126138 GMT Re: Cần mẫu virus lây qua usb /hvaonline/posts/preList/21140/126092.html#126092 /hvaonline/posts/preList/21140/126092.html#126092 GMT Re: Cách diệt Virus Win32.nontai.exe làm full ổ đĩa /hvaonline/posts/preList/21236/126088.html#126088 /hvaonline/posts/preList/21236/126088.html#126088 GMT Lập lịch lưu event log ra file /hvaonline/posts/preList/10759/61967.html#61967 /hvaonline/posts/preList/10759/61967.html#61967 GMT Mdaemon không thể nhận Mail BCC BCC Headers in MDaemon KBA-01291 Summary -------------------------------------------------------------------------------- BCC by definition is blind. The header should never be created by a mail client because the message should not display that it was sent to anyone in the BCC field. Here's what the headers look like when composing a message with a BCC: Received: from robin ([127.0.0.1]) by test.mail ([127.0.0.1]) with SMTP (MDaemon.PRO.v6.0.5.R); Tue, 20 Aug 2002 10:09:15 -0400 Reply-To: 'Robin' <test@company.mail> From: 'Robin' <test@company.mail> To: <yep@company.mail> Subject: test There is no BCC info in the message even before it goes out to the Internet for delivery. (I BCCed robin@isp.com.) The way that BCC mail is routed is via the SMTP envelope information. Mail servers pass the message along via SMTP and the delivery information is kept in tact. When you download the message via DomainPOP, MDaemon does not have the SMTP delivery information any longer. It has to make the best guess as to where the message should go. Some ISPs stamp a header so that the SMTP delivery information is available for parsing, but it's not required. These headers may be “Envelope-To” or “Delivered-To” or something similar. Your ISP may be able to do something along these lines. Alternatively you could ask them if you could receive mail via ATRN instead of POP because then the SMTP envelope is still there. Như vậy, để nhận được mail, mình phải nhờ bên Hosting Mail Server chèn thông tin vô Header ? ATRN thì mình không rành. Trường hợp này theo mình cũng thường gặp lắm, bạn nào giải quyết rồi xin chia sẻ. Cám ơn nhiều.]]> /hvaonline/posts/preList/8206/47839.html#47839 /hvaonline/posts/preList/8206/47839.html#47839 GMT Re: Giúp đỡ về MDaemon ! /hvaonline/posts/preList/8061/47103.html#47103 /hvaonline/posts/preList/8061/47103.html#47103 GMT Re: Về MDeamon. /hvaonline/posts/preList/7953/46707.html#46707 /hvaonline/posts/preList/7953/46707.html#46707 GMT Re: Về MDeamon. /hvaonline/posts/preList/7953/46308.html#46308 /hvaonline/posts/preList/7953/46308.html#46308 GMT