2017-09-11 8 views
0

Dans mon formulaire, j'ai utilisé une table temporaire dans DataSource - avec la propriété TableType: InMemory.Comment insérer le deuxième enregistrement dans une table temporaire?

Dans Ma forme j'ai un simple code, comme ceci:

public TableTmpTable insertRecords(String _param_I, string _param_II) 
{ 
    TableTmpTable myInMemoryTable; 

    myInMemoryTable.clear(); 
    myInMemoryTable.initValue(); 

    myInMemoryTable.Field_I = _param_I; 
    myInMemoryTable.Field_II = _param_II; 

    myInMemoryTable.insert(); 

    return myInMemoryTable; 
} 

Je dois appeler cette méthode plus d'une fois. Mais, quand j'appelle la méthode, j'ai perdu mon précédent enregistrement. Comment insérer plus d'enregistrement dans InMemory dans un autre temps?

Merci dans le conseil!

Répondre

2

Portée

Une table de InMemory est instancié lors de l'insertion du premier enregistrement. La table InMemory instanciée continue d'exister uniquement lorsqu'une variable de tampon d'enregistrement qui fait référence à la table existe. La mémoire ou l'espace disque de la table InMemory est désaffecté dès que le tampon d'enregistrement est hors de portée.

De MSDN, Temporary InMemory Tables

Qu'est-ce que votre code est fait, il crée une nouvelle instance de la table tampon à chaque fois que la méthode est appelée. Au lieu de cela, vous devez utiliser le tampon de table de la source de données de formulaire.

Voir aussi Temporary table as form data source et AX 2012: Using Temporary Table as Form’s Datasource

+0

Merci @ FH-Inway. Des conseils très utiles. J'ai déclaré InMemoryTable une seule fois dans la classe classDeclaration ma Table et l'ai utilisée dans tous les processus. – ulisses

0

juste diviser votre méthode de un à deux.

La première méthode va initialiser votre table et la seconde va insérer vos enregistrements.

+0

OP mentionné dans les commentaires qu'elle a initialisé la table dans le formulaire 'classDeclaration'. Que ferait votre méthode d'initialisation en plus de cela? –