fairyfox 发表于 2014-1-6 14:06:51

火急:U8V10.1创建新账套库,不能将值NULL插入列'bflag_om',表'tempdb.dbo.#GL_mend

本帖最后由 fairyfox 于 2014-1-6 14:09 编辑


创建新账套库,不能将值NULL插入列'bflag_om',表'tempdb.dbo.#GL_mend .....
列不允许有空值,insert失败。
点击确认 最后一步类型不匹配。
实在不知道该改什么地方。
'bflag_OM' :委外管理。 没有购买这个模块,也没有启用,也没有数据。

fairyfox 发表于 2014-1-6 17:04:29

本帖最后由 fairyfox 于 2014-1-6 17:16 编辑

--汇总所有月结GL_Mend到一临时表
SET @field=''
SELECT @field =@field + name +',' FROM syscolumns WHERE ID=OBJECT_ID('GL_mend') AND name<>'pubufts'
SET @field=LEFT(@field,LEN(@field)-1)

SELECT * INTO #GL_mend FROM GL_mend WHERE 1=2
DECLARE rs CURSOR FAST_FORWARD FOR SELECT cDatabase,ISNULL(iEndYear,(SELECT MAX(iYear) FROM UFSystem..UA_Period WHERE cAcc_Id=@accID AND ISNULL(bIsDelete,0)=0 ))
FROM UFSystem..UA_AccountDatabase WHERE cAcc_ID=@accID AND DB_ID(cDatabase) IS NOT NULL
OPEN rs
FETCH NEXT FROM rs INTO @dbName,@maxPeriodYear
WHILE @@FETCH_STATUS=0
BEGIN
      SET @strSql=' IF (SELECT CAST(cValue AS decimal) FROM '+@dbName+'..AccInformation WHERE cID=''99'' AND cSysID=''AA'')>=10.00'
      SET @strSql=@strSql+' EXEC(''INSERT INTO #GL_mend('+@field+') SELECT '+@field+' FROM '+@dbName+'..GL_mend WHERE iYear<='+CAST(@maxPeriodYear AS nvarchar(10))+''')'
      EXEC(@strSql)
      FETCH NEXT FROM rs INTO @dbName,@maxPeriodYear
END
CLOSE rs
DEALLOCATE rs



【DECLARE rs CURSOR FAST_FORWARD FOR SELECT cDatabase,ISNULL(iEndYear,(SELECT MAX(iYear) FROM UFSystem..UA_Period WHERE cAcc_Id=@accID AND ISNULL(bIsDelete,0)=0 ))】提取的是同帐套号的好几年的数据库名称,之前升级导致2011-2012年的GL_mend数据表中的bflag_om字段全是null值,全部改成0,重新建帐套,搞定。
终于靠自己的sql知识搞定了,呵呵。



piccwzp 发表于 2014-1-16 09:36:03

:L后台追一下就知道

lanpi2008 发表于 2014-1-19 21:38:17

ddddddddddddddddd

a3512556 发表于 2014-2-19 15:23:52

显示已经很明白了。。都告诉你是那个表问题了。。你只要用SQL查询到那个表然后找到那个列进行修改就可以了

nazi8888 发表于 2014-8-10 16:06:31

GL-MEND表里的OM改成0
页: [1]
查看完整版本: 火急:U8V10.1创建新账套库,不能将值NULL插入列'bflag_om',表'tempdb.dbo.#GL_mend