Triệu chứng
Bạn có các ghi chú được nhân đôi hoặc liên kết chéo trong Microsoft Dynamics GP.
Bài viết này cung cấp một tập lệnh có thể được sử dụng để xác định chỉ mục ghi chú cao nhất được gán trong một công ty nhất định. Bạn cũng có thể dùng nó để đặt lại giá trị chỉ mục ghi chú tiếp theo thành số cao hơn kế tiếp. Điều này sẽ ngăn không cho các chỉ mục ghi chú tiếp tục có được nối kết chéo hoặc không chính xác.
Điều này sẽ không sửa các chỉ mục ghi chú đã không chính xác.
Nguyên nhân
Chỉ mục ghi chú tiếp theo trong bảng bản cái công ty (SY01500) đã được đặt quá thấp khiến các bản ghi mới nhận các chỉ mục ghi chú tương tự như các bản ghi khác.
Độ phân giải
1. Tạo một bản sao lưu của DYNAMICS và tất cả các cơ sở dữ liệu của công ty.
2. Chạy câu lệnh sau đối với cơ sở dữ liệu công ty có các ghi chú trùng lặp hoặc được nối chéo.
Lưu ý Nếu bạn đang dùng Trình phân tích Truy vấn, hãy chạy câu lệnh trong Trình SQL Tích Truy vấn. Để mở Trình phân tích Truy vấn, bấm vào Bắt đầu , trỏ tới Chương trình , trỏ tới Trình Microsoft SQL Server , rồi bấm vào Trình phân tích Truy vấn . Nếu bạn đang sử dụng Microsoft SQL Server Management Studio, hãy chạy câu lệnh ở Microsoft SQL Server Management Studio. Để mở Management Studio, bấm vào Bắt đầu , trỏ tới Chương trình , trỏ tới Microsoft SQL Server 2005/2008/2012 , rồi bấm vào SQL Server Management Studio. Để chạy một tập lệnh, hãy bấm Truy vấn Mới.
---------------------------------------------
/*
** FindMaxNoteIndex.SQL
**
** Mục đích:
**
** Tìm giá trị tối đa của NOTEINDX từ tất cả các bảng, bao Project toán.
**
** Tập lệnh này phải chạy đối với công ty có ghi chú không chính xác.
** bản ghi chú sẽ tự động cập nhật SY01500 cho bạn vào chỉ mục ghi chú tiếp theo đúng.
**
*/
if exists (select * from tempdb..sysobjects where name = '##GPSMaxNote')
dbo.##GPSMaxNote
đặt nocount vào
create table ##GPSMaxNote (MaxNoteIndex numeric(19,5) null)
truy cập
-----------------------
khai báo @cStatement varchar(255) /* Giá trị từ giá t_cursor */
khai báo @noteidx số(19,5)
khai báo @database là varchar(5)
set @database = cast(db_name() as varchar(5)) /* Get the tables that have
a column name of NOTEINDX. */
khai báo T_cursor con trỏ cho
chọn 'khai báo @NoteIndex số(19,5) chọn @NoteIndex = max(' +c.name+ ') từ ' + o.name + ' chèn ##GPSMaxNote values(@NoteIndex)'
từ sysobjects o, syscolumns c
trong đó o.id = c.id
và o.type = 'U'
và (c.name = 'NOTEINDX' hoặc c.name like '%noteidx%' hoặc c.name like '%niteidx%' hoặc c.name ='NOTEINDX2')
/* Ok, chúng ta có danh sáchbảng. Bây giờ, lấy giá trị tối đa của NOTEINDX từ mỗi bảng. */
mở T_cursor
fetch next from T_cursor into @cStatement
trong khi (@@fetch_status <> -1)
bắt đầu
exec (@cStatement)
fetch next from T_cursor into @cStatement
end
deallocate T_cursor
/* Display Maximum Note Index */
chọn 'Chỉ mục Ghi chú Tối đa:', max(MaxNoteIndex) từ ##GPSMaxNote trong đó MaxNoteIndex không null /* Cập nhật Chỉ mục Ghi chú
Tiếp theo */
sử dụng DYNAMICS
set @noteidx = (select max(MaxNoteIndex) from ##GPSMaxNote where MaxNoteIndex is not null)
cập nhật SY01500 đặt NOTEINDX = (@noteidx + 1.0) trong đó INTERID=@database
đặt nocount tắt
--------------------------------------------------------------------------
Điều này sẽ tìm thấy chỉ mục ghi chú tối đa cho tất cả các công ty, rồi cập nhật bảng SY01500 để đảm bảo các ghi chú sẽ không được nối kết chéo từ nay về sau.
3. Lặp lại Bước 2 cho mỗi cơ sở dữ liệu công ty có chỉ mục ghi chú được nối kết chéo.
Bài viết này đã được TechKnowledge Document ID: 4837
ÁP DỤNG CHO
• |
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 |
• |
Trình quản lý Hệ thống |