Symptomer
Du har noter, der duplikeres eller krydsforbundne i Microsoft Dynamics GP.
Denne artikel indeholder et script, der kan bruges til at bestemme det højeste noteindeks, der er tildelt i et givet firma. Du kan også bruge den til at nulstille din næste noteindeksværdi til det næste højere tal. Dette vil forhindre yderligere noteindekser i fremover at blive krydsbundne eller forkerte.
Dette retter ikke noteindekser, der allerede er forkerte.
Årsag
Det næste noteindeks i firmamastertabellen (SY01500) er indstillet for lavt, hvilket medfører, at nye poster modtager noteindekser, der er de samme som andre.
Løsning
1. Lav en sikkerhedskopi af DYNAMICS og alle firmadatabaser.
2. Kør følgende sætning mod den firmadatabase, der indeholder de duplikerede eller krydsbundne noter.
Bemærk! Hvis du bruger Forespørgselsanalyse, skal du køre sætningen i SQL Forespørgselsanalyse. Hvis du vil åbne Forespørgselsanalyse, skal du klikke på Start, pege på Programmer, pege på Microsoft SQL Server og derefter klikke på Forespørgselsanalyse . Hvis du bruger Microsoft SQL Server Management Studio, skal du køre sætningen i Microsoft SQL Server Management Studio. Du kan Management Studio ved at klikke på Start , pege på Programmer , pege på Microsoft SQL Server 2005/2008/2012 og derefter klikke på SQL Server Management Studio . Hvis du vil køre et script, skal du klikke på Ny forespørgsel .
---------------------------------------------
/*
** FindMaxNoteIndex.SQL
**
** Formål:
**
** Find den maksimale værdi af NOTEINDX fra alle tabeller, herunder Project Accounting.
**
** Dette script skal køres mod det firma, hvor noterne er forkerte.
** den opdaterer automatisk dit SY01500 for dig til det korrekte næste noteindeks.
**
*/
hvis der findes (vælg * tempdb..sysobjekter, hvor navn = '##GPSMaxNote')
drop table dbo.##GPSMaxNote
angiv antal på
opret tabel ##GPSMaxNote (MaxNoteIndex numerisk(19,5) null)
gå
-----------------------
declare @cStatement varchar(255) /* Value from the t_cursor */
declare @noteidx numerisk(19,5)
declare @database as varchar(5)
set @database = cast(db_name() as varchar(5)) /* Hent de tabeller, der har kolonnenavnet
NOTEINDX. */
declare T_cursor markør for
vælg 'declare @NoteIndex numeric(19,5) vælg @NoteIndex = max(' +c.name+ ') fra ' + o.name + ' insert ##GPSMaxNote values(@NoteIndex)'
fra sysobjects o, syscolumns c
hvor o.id = c.id
og o.type = 'U'
and (c.name = 'NOTEINDX' eller c.name like '%noteidx%' eller c.name like '%niteidx%' eller c.name ='NOTEINDX2')
/* OK, vi har listenover tabeller. Få nu den maksimale værdi af NOTEINDX fra hver tabel. */
åbn T_cursor
hent næste fra T_cursor til @cStatement
mens (@@fetch_status <> -1)
begynd
exec (@cStatement)
hent næste fra T_cursor til @cStatement
end
deallocate T_cursor
/* Display Maximum Note Index */
vælg 'Max Note Index:', max(MaxNoteIndex) fra ##GPSMaxNote hvor MaxNoteIndex ikke er null
/* Opdater næste noteindeks */
brug DYNAMICS
set @noteidx = (select max(MaxNoteIndex) from ##GPSMaxNote where MaxNoteIndex is not null)
update SY01500 set NOTEINDX = (@noteidx + 1,0), hvor INTERID=@database
indstil antal fra
--------------------------------------------------------------------------
Dette finder det maksimale noteindeks for alle virksomheder og opdaterer derefter SY01500-tabellen for at sikre, at noterne ikke bliver krydstilknyttede fremover.
3. Gentag trin 2 for hver firmadatabase, der har krydsbundne noteindekser.
Denne artikel var TechKendt dokument-id: 4837
GÆLDER FOR
• |
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 |
• |
System Manager |