2016-02-17 5 views
1

J'utilise Crystal Reports 2008 avec SQL Server 2014.Crystal Reports création de table temporaire avec SQL Server

J'ai lu sur Internet qu'il était possible de créer une table temporaire avec Crystal Reports. Ce lien indique que, l'un des nombreux exemples ->Click here

Pourtant, quand je vais à l'expert de la base de données, créez une nouvelle commande et entrez la LDD suivante

CREATE TABLE #temp_test (col1 VARCHAR(5)) 

Je reçois cette erreur

enter image description here

Traduction:

erreur de connecteur de base de données

: « N o message d'erreur du serveur '

Pourtant, quand je fais cela avec SQL Server sur ma base de données, tout va bien.

Avez-vous réussi à le faire? Si oui, comment?

Cela ressemble à une légende urbaine pour moi, mais je peux me tromper ...

Vive

+1

créez-vous une table temporaire dans les rapports Crystal ou dans la base de données? – Siva

+0

Salut @Siva, en essayant de le faire sur CR –

Répondre

1

Lorsque vous créez une « Commande » table en cristal, vous donnez un ensemble de cristal texte envoyer au serveur SQL et Crystal attend un jeu de données en retour. Tout entre est fait sur le serveur SQL. Crystal vérifie la commande en l'envoyant au serveur SQL lorsque vous l'entrez pour voir si cela fonctionne. Par conséquent, votre table temporaire est créée sur le serveur SQL. En outre, lorsque vous créez une table temporaire, elle est supprimée une fois la commande exécutée. Par conséquent, si vous utilisez uniquement ce code, le serveur SQL crée la table, mais il n'y a aucun jeu de données à renvoyer. Il réussit, donc ne renvoie pas une erreur, mais ne renvoie pas non plus de données, d'où le message: "Aucun message d'erreur du serveur".

Pour votre prochaine étape, je suggère d'utiliser le code comme ceci:

CREATE TABLE #temp_test (col1 VARCHAR(5)) 
SELECT * FROM #temp_test 

Cela va créer un jeu de données vide pour revenir à Crystal, de sorte qu'il devient la réponse dont il a besoin. Je dis cela pour que vous ne pensiez pas que quelque chose ne va pas quand vous ne voyez rien. Vous aurez besoin d'insérer des données dans la table temporaire afin de l'obtenir à partir de l'instruction select pour la confirmation visuelle.

Je vous suggère également de ne pas utiliser de table temporaire à moins que vous n'ayez déterminé que vous en avez réellement besoin ou que vous en aurez réellement besoin dans le cadre de la commande. Par exemple, vous pouvez en avoir besoin pour augmenter les performances d'une requête ou d'un CTE particulièrement complexe, ce qui peut augmenter les performances pour utiliser une table temporaire. Mais je créerais d'abord cette requête et je m'inquiéterais de l'optimisation après en avoir développé au moins une partie.

+0

Vous êtes un très bien informé. Merci :) –