RÉSUMÉ Cet article explique comment créer SQL tables pour les
solutions Microsoft Business - Programmes de bonne dextérité.
INFORMATIONS SUPPLÉMENTAIRES Utilisez les étapes de développement pour créer SQL tables résidant dans un programme tiers intégré de
dextérité. Ces étapes couvrent également l’octroi SQL autorisation d’accès à ces tables.
Remarque Cette méthode remplace la méthode amAutoGrant décrite dans le chapitre 41 du Guide de programmer de la dextérité, Volume 1.
1. Créez une procédure globale nommée
Démarrage si celle-ci n’existe pas dans votre programme tiers. Ce script s’exécute lorsque vous démarrez Great (Grande)) et est généralement l’endroit où des déclencheurs sont enregistrés.
2. Dans le script de démarrage, créez un déclencheur de procédure
sur Add_Successful_Login_Record procédure à l’aide du code suivant.
{Name: Startup}
local integer l_result;
l_result = Trigger_RegisterProcedure(script Add_Successful_Login_Record, TRIGGER_AFTER_ORIGINAL, script gp_create_tables);
if l_result <> SY_NOERR then
warning "The Add_Successful_Login_Record trigger is not registered.";
end if;
3. Le déclencheur enregistré créé à l’étape 2 appelle la procédure globale à gp_create_tables chaque fois que l’utilisateur se
connecte à Microsoft Dynamics GP. Cette procédure s’exécute lorsqu’une société Great Great Company est ouverte initialement lors du basculement de l’utilisateur ou de l’entreprise.
4. Créez la procédure globale nommée
gp_create_tables. Ce script crée les tables pour le programme tiers dans la base de données correcte SQL Server données. Elle crée également la table générée par les procédures storedp entre les tables (zDP) et accorde SQL autorisations d’accès à la table et aux procédures. Utilisez le code suivant.
{Name: gp_create_tables}
local boolean result,l_result,OUT_Access;
{if logged in as sa, let them create the tables}
if 'SQLSaUser' of globals then
OUT_Access = true;
else
{This else statement will work only on 8.0. If logged in as a user other than sa,
but they have table access permissions, let them create the tables}
if syUserInRole('User ID' of globals, ROLE_SYSADMIN) or (syUserIsDBO ('User ID' of globals, 'Intercompany ID' of globals)
and syUserIsDBO ('User ID' of globals, SQL_SYSTEM_DBNAME)) then
OUT_Access = true;
end if;
end if;
if 'SQL Server' of globals > 0 and OUT_Access then
{enable table creation mode}
result = Table_SetCreateMode(true);
{Do not display any table errors to the user.}
result = Table_DisableErrorChecks(true);
{accessing the table creates it, list all your tables here, make sure to close the tables when done}
get first table GPSetup; {Purchasing series table}
close table GPSetup;
get first table GPSetup2; {System series table}
close table GPSetup2; {now set permissions, call once for the table and once for the stored procs}
{GPSetup is a purchasing series table so that will be in the company dbo}
l_result = GrantAccess(physicalname(table GPSetup),false,"DYNGRP",'Intercompany ID' of globals)
of form 'SQL Maintenance';
l_result = GrantAccess(physicalname(table GPSetup),true,"DYNGRP",'Intercompany ID' of globals)
of form 'SQL Maintenance';
{GPSetup2 is a system series table so that will be in the DYNAMICS database}
l_result = GrantAccess(physicalname(table GPSetup2),false,"DYNGRP","DYNAMICS") of form 'SQL Maintenance';
l_result = GrantAccess(physicalname(table GPSetup2),true,"DYNGRP","DYNAMICS") of form 'SQL Maintenance';
{Turn off automatic table creation.}
result = Table_SetCreateMode(false);
{Turn table error reporting back on.}
result = Table_DisableErrorChecks(false);
end if;
5. Les tables et les procédures stockées générées seront créées dans les SQL Server et SQL autorisations seront accordées. Ce script s’exécutera uniquement pour les utilisateurs de SSA ou DYNSA et une fois les tables créées, il est normal de l’exécuter à nouveau.
Cet article était TechKnowknow Document ID:33429