Vues et index [Résolu]

Messages postés
10
Date d'inscription
jeudi 10 avril 2008
Dernière intervention
19 décembre 2009
- 16 déc. 2009 à 09:08 - Dernière réponse :
Messages postés
834
Date d'inscription
mardi 5 octobre 2004
Dernière intervention
7 mai 2013
- 19 déc. 2009 à 09:43
Bonjour,
J'ai essayé de migrer ma base de donné en sql serveur,
et maintenant j'ultise des vues distantes pour acceder à ma base.
cependant, dans mon formulaire les liaisons entre les tables sont rompues dans l'environnement de données car je n'ai plus d'index et de clé.
Je vous remercie de me donner un astuce pour comment resoudre cela car quand je travaillais en local, tout allait si bien.
Comment peut-on avoir le data diagrams de sql server à partir d'un formulaire?
Merci encore
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
834
Date d'inscription
mardi 5 octobre 2004
Dernière intervention
7 mai 2013
- 16 déc. 2009 à 15:43
3
Merci
Bonjour,

il te faut créer manuellement les index dont tu as besoin, après avoir ouvert tes vues distantes. L'endroit où tu vas le faire dépend de la façon dont tu ouvres tes vues.

Qu'appelles-tu le data diagrams de sql server?

Quelle version de Fox utilises-tu? quelle version de SQL server?

Merci michelatoutfox 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de michelatoutfox
Messages postés
10
Date d'inscription
jeudi 10 avril 2008
Dernière intervention
19 décembre 2009
- 18 déc. 2009 à 14:04
0
Merci
bonjour Michel,

Merci pour la réponse.
database diagrams c'est comme le gérenateur de bases de donnés, du coté sql, là où on crée les liaisons entre les tables. En fait, en faisant celà dans Sql server je pensait que les vues seraient automatiquement liées , mais comme cela n'a pas été le cas, j'ai supprimé le database diagram.
J'utilise VFP9 et sqlserver2005.
si j'ai bien compris, j'enlève mes vues dans l'environnement de données et dans l'init du formulaire je fais use XXX et crée les index et relations comme ci c'était une table?
Commenter la réponse de cs_Kenjo
Messages postés
834
Date d'inscription
mardi 5 octobre 2004
Dernière intervention
7 mai 2013
- 18 déc. 2009 à 14:46
0
Merci
Ah, beaucoup de confusions dans ta réponse:

le database diagrams dont tu parles ne fait pas partie de SQL server, mais de SSMS (Sql Server Management Studio), et ce n'est pas la même chose. SQL Server, c'est le serveur, c'est ce que fox requète par les vues distantes (entre autres), et SSMS, fox n'en connait strictement rien, parceque c'est un outil d'interface graphique pour gérer SQL Server (et ça n'est pas le meilleur, en tout cas pas dans tous les besoins). Il n'y a pas de liaison entre les tables en SQL, il y a des contraintes de clé étrangère. Et ça se crée dans du code, ou dans le générateur de tables, ou éventuellement dans un objet diagramme

Et non, ce n'est surtout pas dans l'init d'un form que l'on ouvre les tables ou les vues: quand l'init de ton form commence, tous les objets qu'il contient ont été déjà créés, tous les init de tous les controles de ce form ont été joués. Et si un seul de ces controles est lié aux données (ce qui devrait être le cas), l'init de ce controle va planter.

donc les ouvertures doivent être faites AVANT l'init du form, dans le LOAD de celui-ci, ou mieux dans le BEFOREOPENTABLE du dataenvironment. tu trouveras plusieurs exemples dans la présentation que j'ai faite sur ce sujet (les objets d'accès aux données)

En ce qui concerne les relations, c'est une technique que tu ne devrais pas utiliser si tes données sont sur SQL Server (et même en général avec des données en dbf, on ne fait plus comme ça). Tu devrais soit créer une vue distante dans fox, qui établit la jointure que tu obtenais dans cette relation, soit créer une vue DANS SQL server qui établit la jointure, et une vue distante dans fox qui pointe sur cette vue dans SQL.

pour les index, vérifie soigneusement leur expression, et ne crée que ceux dont tu as strictement besoin, au moment où tu en as besoin. vérifie bien qu'ils sont crés localement (pas sur une unité mappée). tu trouveras les infos sur ce sujet dans l'aide, en regardant les termes du config.fpw
Commenter la réponse de michelatoutfox
Messages postés
10
Date d'inscription
jeudi 10 avril 2008
Dernière intervention
19 décembre 2009
- 19 déc. 2009 à 07:37
0
Merci
Merci beaucoup,je me suis trompé en ecrivant init au lieu de load, mais c'etait deja parti.encore merci.
A propos des relations, j'utilise toujours set relation to pour tirer l'information dans une autre table, mais là donc je peux stocker mon champ par ex code_fournisseur en variable et créer une vue qui puisera cette variable dans la base fournisseur, n'est ce pas.
Commenter la réponse de cs_Kenjo
Messages postés
10
Date d'inscription
jeudi 10 avril 2008
Dernière intervention
19 décembre 2009
- 19 déc. 2009 à 07:49
0
Merci
Et si je regroupe tout dans une vue (la base articles, le fournisseur, famille, tarif)ce ne serait pas un peu lourd.merci
Commenter la réponse de cs_Kenjo
Messages postés
834
Date d'inscription
mardi 5 octobre 2004
Dernière intervention
7 mai 2013
- 19 déc. 2009 à 09:43
0
Merci
En quoi une vue serait plus "lourde" qu'une relation? Un peu lourd, ça veut dire quoi??

Une relation effectue une jointure, comme le fait une vue. Mais cette pseudo-jointure est faite sur les curseurs locaux créés sur les vues distantes.

Une vue distante avec les mêmes jointures va envoyer sa requète au serveur SQL, et c'est lui qui va faire la jointure, et renvoyer un curseur résultant (on le voit très bien avec le profiler de SQL).

A ton avis, le plus efficace, c'est quoi?
Commenter la réponse de michelatoutfox

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.