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