Vues et index

Résolu
cs_Kenjo Messages postés 10 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 19 décembre 2009 - 16 déc. 2009 à 09:08
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre 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

6 réponses

michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
16 déc. 2009 à 15:43
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?
3
cs_Kenjo Messages postés 10 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 19 décembre 2009
18 déc. 2009 à 14:04
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?
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
18 déc. 2009 à 14:46
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
0
cs_Kenjo Messages postés 10 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 19 décembre 2009
19 déc. 2009 à 07:37
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Kenjo Messages postés 10 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 19 décembre 2009
19 déc. 2009 à 07:49
Et si je regroupe tout dans une vue (la base articles, le fournisseur, famille, tarif)ce ne serait pas un peu lourd.merci
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
19 déc. 2009 à 09:43
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?
0
Rejoignez-nous