現象
Microsoft Dynamics GP で重複またはクロスリンクされているノートがあります。
この記事では、特定の会社で割り当てられている最高のメモ インデックスを決定するために使用できるスクリプトを提供します。 また、この値を使用して、次のノート インデックス値を次の高い数値にリセットできます。 これにより、今後のノート インデックスがクロスリンクまたは正しくない可能性があります。
これにより、既に正しくないノート インデックスは修正されません。
原因
会社のマスター (SY01500) テーブルの次のメモ インデックスが低すぎると、新しいレコードが他のレコードと同じメモ インデックスを受け取る原因になります。
解決策
1. DYNAMICS とすべての企業データベースのバックアップを作成します。
2. 重複またはリンクされたノートがある会社のデータベースに対して、次のステートメントを実行します。
注Query Analyzer を使用している場合は、クエリ アナライザーで ステートメントSQL実行します。 クエリ アナライザーを開くために、[スタート] をクリックし、[プログラム] をポイントし、[クエリ アナライザー] Microsoft SQL Server をポイントします。 使用している場合は、Microsoft SQL Server Management Studio で ステートメントを実行Microsoft SQL Server Management Studio。 Management Studio を開Management Studio をクリックし、[プログラム]をポイントし、[Microsoft SQL Server 2005/2008/2012]をポイントし、[SQL Server Management Studio]をクリックします。 スクリプトを実行するには、[新しいクエリ] をクリックします 。
---------------------------------------------
/*
** FindMaxNoteIndex.SQL
**
** 目的:
**
** 会計処理を含むすべてのテーブルから NOTEINDX の最大値Projectします。
**
** このスクリプトは、メモが正しくない会社に対して実行する必要があります。
** SY01500 が自動的に正しい次のノート インデックスに更新されます。
**
*/
存在する場合 (name = '#tempdb..sys' のオブジェクトから * を#GPSMaxNote)
drop table dbo.##GPSMaxNote
nocount をオンに設定する
create table ##GPSMaxNote (MaxNoteIndex numeric(19,5) null)
go
-----------------------
declare @cStatement varchar(255) /* value from the t_cursor */
数値@noteidx宣言する(19,5)
varchar@database宣言する(5)
set @database = cast(db_name() as varchar(5))
/* NOTEINDXという列名のテーブルを取得します。 */
カーソルT_cursor宣言します。
'declare @NoteIndex numeric(19,5) select @NoteIndex = max(' +c.name+ ') from ' + o.name + ' insert ##GPSMaxNote values(@NoteIndex)'
from sysobjects o, syscolumns c
where o.id = c.id
と o.type = 'U'
および (c.name = 'NOTEINDX' または c.name ('%noteidx%' や c.name ('%ni c.name ='NOTEINDX2') など)
/* OK。テーブルの一覧があります。次に、各テーブルから NOTEINDX の最大値を取得します。*/
open T_cursor
次に、T_cursor から @cStatement にフェッチします。
while (@@fetch_status <> -1)
begin
exec (@cStatement)
次に、T_cursor から @cStatement にフェッチします。
end
deallocate T_cursor
/* Display Maximum Note Index */
##GPSMaxNote から 'Max Note Index:'、 max(MaxNoteIndex) を選択します。MaxNoteIndex は null ではありません
/* Update Next Note Index */
DYNAMICS を使用する
set @noteidx = (MaxNoteIndex が null ではない ##GPSMaxNote から max(MaxNoteIndex) を選択)
UPDATE SY01500 set NOTEINDX = (@noteidx + 1.0) where INTERID=@database
nocount をオフに設定する
--------------------------------------------------------------------------
これにより、すべての企業の最大ノート インデックスが検索され、SY01500 テーブルが更新され、今後ノートが相互にリンクされなくなっています。
3. 相互にリンクされたノート インデックスを持つ会社のデータベースごとに手順 2 を繰り返します。
この記事は TechKnowledge Document ID: 4837 でした
適用対象
• |
Microsoft Dynamics GP 9.0 |
• |
Microsoft Business Solutions –Great Plains 8.0 |
• |
Microsoft Business Solutions –Great Plains 7.5 |
• |
Microsoft Great Plains eEnterprise 7.0 |
• |
Microsoft Great Plains Dynamics 7.0 |
• |
Great Plains eEnterprise 6.0 |
• |
Great Plains Dynamics 6.0 |
• |
システム マネージャー |