Simptomai
Programoje "Microsoft Dynamics GP" yra pasikartojančių arba kryžminių susietų pastabų.
Šiame straipsnyje pateikiamas scenarijus, kurį galima naudoti norint nustatyti didžiausią pastabų indeksą, priskirtą tam tikrą įmonę. Taip pat galite jį naudoti norėdami iš naujo nustatyti kitos pastabos indekso reikšmę į kitą didesnį skaičių. Tai neleis, kad tolesni pastabų indeksai nebūtų susieti arba neteisingi.
Tai nepataisys pastabų indeksų, kurie jau yra neteisingi.
Priežastis
Kitas pastabų indeksas įmonės ruošinio (SY01500) lentelėje nustatytas per mažas, todėl nauji įrašai gauna pastabų indeksus, kurie yra tokie patys kaip kiti.
Skiriamoji geba
1. Sukurkite atsarginę DYNAMICS ir visų įmonės duomenų bazių kopiją.
2. Vykdykite šį sakinį įmonės duomenų bazėje, kurioje yra pasikartojančios arba kryžminės susietos pastabos.
Pastaba Jei naudojate užklausų analizatorių, paleiskite sakinį naudodami SQL analizatorių. Norėdami atidaryti užklausų analizatorių, spustelėkite Pradėti , nukreipkite žymiklį į Programos , nukreipkite žymiklį į Microsoft SQL Server , tada spustelėkite Užklausų analizatorius . Jei naudojate Microsoft SQL Server "Management Studio", vykdykite sakinį Microsoft SQL Server "Management Studio". Norėdami atidaryti "Management Studio", spustelėkite Pradžia , nukreipkite žymiklį į Programos , nukreipkite žymiklį į Microsoft SQL Server 2005/2008/2012 , tada spustelėkite "SQL Server Management Studio" . Norėdami vykdyti scenarijų, spustelėkite Nauja užklausa .
---------------------------------------------
/*
** FindMaxNoteIndex.SQL
**
** Paskirtis:
**
** Raskite maksimalią NOTEINDX reikšmę iš visų lentelių, įskaitant Project Apskaita.
**
** Šis scenarijus turi būti vykdomas su įmone, kurioje pastabos neteisingos.
** ji automatiškai atnaujins jūsų SY01500 į tinkamą kitą pastabų indeksą.
**
*/
jei yra (pasirinkite * iš tempdb..sys, kur pavadinimas = '##GPSMaxNote')
drop table dbo.##GPSMaxNote
nustatyti nocount on
kurti lentelę ##GPSMaxNote (MaxNoteIndex skaitinis(19,5) null)
eiti
-----------------------
paskelbti @cStatement varchar(255) /* Reikšmė iš t_cursor */
paskelbti @noteidx(19,5)
paskelbti @database varchar(5)
nustatyti @database = cast(db_name() kaip varchar(5)) /* Gaukite
lenteles, kuriose yra NOTEINDX stulpelio pavadinimas. */
paskelbti T_cursor žymiklį
pasirinkite 'paskelbti @NoteIndex skaitinį(19,5) pasirinkite @NoteIndex = max(' +c.name+ ') iš ' + o.name + ' insert ##GPSMaxNote values(@NoteIndex)"
iš sysobjects o, syscolumns c
kur o.id = c.id
ir o.type = 'U'
ir (c.name = "NOTEINDX" arba c.name pvz., "%noteidx%" arba c.name pvz., "%niteidx%" arba c.name ='NOTEINDX2')
/* Gerai, turime lentelių sąrašą. Dabar iš kiekvienos lentelės gaukite maksimalią NOTEINDX reikšmę. */
atidaryti T_cursor
išveskite šalia T_cursor į @cStatement
o (@@fetch_status <> -1)
pradžia
exec (@cStatement)
išveskite šalia T_cursor į @cStatement
baigti
deallocate T_cursor
/* Display Maximum Note Index */
select 'Max Note Index:', max(MaxNoteIndex) from ##GPSMaxNote where MaxNoteIndex is not null
/* Update Next Note Index */
naudoti DYNAMICS
set @noteidx = (select max(MaxNoteIndex) from ##GPSMaxNote where MaxNoteIndex is not null)
update SY01500 set NOTEINDX = (@noteidx + 1.0), kur INTERID=@database
nocount off
--------------------------------------------------------------------------
Bus rastas maksimalus visų įmonių pastabų indeksas, o tada atnaujinta lentelė SY01500, kad būtų užtikrinta, jog pastabos nebus susietos tarpusavyje.
3. Kartokite 2 veiksmą su kiekviena įmonės duomenų baze, kurioje yra kryžminių susietų pastabų indeksų.
Šis straipsnis buvo "TechKnowledge" dokumento ID: 4837
TAIKOMA
• |
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 |
• |
Sistemos tvarkytuvas |