תופעות
יש לך הערות משוכפלות או מקושרות מקושרות ב- Microsoft Dynamics GP.
מאמר זה מספק קובץ Script שניתן להשתמש בו כדי לקבוע את אינדקס ההערה הגבוה ביותר שהוקצה בחברה נתון. באפשרותך גם להשתמש בו כדי לאפס את ערך אינדקס ההערה הבא למספר הגבוה הבא. פעולה זו תמנע מאינדקסי הערות נוספים להמשיך להיות מקושרים או שגויים.
פעולה זו לא תתקן אינדקסי הערות שכבר שגויים.
סיבה
אינדקס ההערה הבא בטבלת תבנית הבסיס של החברה (SY01500) הוגדר נמוך מדי וגורם לכך שהרשומות החדשות יקבלו אינדקסי הערות זהים לזה של אחרים.
רזולוציה
1. בצע גיבוי של DYNAMICS וכל מסדי הנתונים של החברה.
2. הפעל את המשפט הבא מול מסד הנתונים של החברה הכולל את ההערות הכפולות או המקושרות.
הערה אם אתה משתמש במנתח השאילתות, הפעל את המשפט ב- SQL Query Analyzer. כדי לפתוח את מנתח השאילתות, לחץ על התחל , הצבע על תוכניות , הצבע על Microsoft SQL Server ולאחר מכן לחץ על מנתח השאילתות . אם אתה משתמש ב- Microsoft SQL Server ניהול, הפעל את המשפט ב- Microsoft SQL Server Management Studio. כדי לפתוח את ניהול Studio, לחץ על התחל , הצבע על תוכניות , הצבע על Microsoft SQL Server 2005/2008/2012 ולאחר מכן לחץ על SQL Server ניהול Studio . כדי להפעיל קובץ Script, לחץ על שאילתה חדשה .
---------------------------------------------
/*
** FindMaxNoteIndex.SQL
**
** מטרה:
**
** מצא את הערך המקסים של NOTEINDX מכל הטבלאות, כולל Project חשבונאות.
**
** יש להפעיל קובץ Script זה מול החברה שבה ההערות שגויות.
** הוא יעדכן באופן אוטומטי את SY01500 שלך לאינדקס ההערה הבא הנכון.
**
*/
אם קיים (בחר * מתוך tempdb..sysכאשר name = '##GPSMaxNote')
drop table dbo.##GPSMaxNote
הגדרת nocount ב-
יצירת טבלה ##GPSMaxNote (MaxNoteIndex numeric(19,5) null)
עבור
-----------------------
להצהיר @cStatement varchar(255) /* ערך מתוך t_cursor */
להצהיר @noteidx מספרי(19,5)
להצהיר @database כ- varchar(5)
set @database = cast(db_name() as varchar(5))
/* קבל את הטבלאות עם שם עמודה של NOTEINDX. */
להצהיר T_cursor עבור
בחר '@NoteIndex מספריים(19,5) בחר @NoteIndex = max(' +c.name+ ') מתוך ' + o.name + ' insert ##GPSMaxNote value(@NoteIndex)'
מ- sysobjects o, syscolumns c
כאשר o.id = c.id
ו- o.type = 'U'
ו- (c.name = 'NOTEINDX' או c.name כמו '%noteidx%' או c.name כמו '%niteidx%' או c.name ='NOTEINDX2')
/* אישור, יש לנו את רשימת הטבלאות. כעת קבל את הערך המקסים של NOTEINDX מכל טבלה. */
פתח T_cursor
הבא מ- T_cursor אל @cStatement
while (@@fetch_status <> -1)
התחל
exec (@cStatement)
הבא מ- T_cursor אל @cStatement
end
deallocate T_cursor
/* הצגת אינדקס ההערה המרבית */
בחר 'Max Note Index:', max(MaxNoteIndex) מ- ##GPSMaxNote כאשר MaxNoteIndex אינו Null
/* עדכן את אינדקס ההערה הבאה */
שימוש ב- DYNAMICS
הגדר @noteidx = (בחר max(MaxNoteIndex) מ- ##GPSMaxNote כאשר MaxNoteIndex אינו Null)
עדכון SY01500 set NOTEINDX = (@noteidx + 1.0) כאשר INTERID=@database
הגדרת nocount כבוי
--------------------------------------------------------------------------
פעולה זו תמצא את אינדקס ההערות המרבי עבור כל החברות ולאחר מכן עדכן את הטבלה SY01500 כדי להבטיח שההערות לא יתוכו להתקדם קדימה.
3. חזור על שלב 2 עבור כל מסד נתונים של חברה הכולל אינדקסי הערות מקושרים.
מאמר זה היה מזהה מסמך TechKnowledge: 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 |
• |
System Manager |