Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème procédures automatiques

5 réponses
Avatar
LOIC
Bonjour,

VB.NET

1)
Sur mon formulaire je met une SqlConnection, puis un SqlDataAdapter et
finalement un Dataset ton fonctionne parfaitement quand je travaille sur une
seule table.

Mon problème c'est lorsque dans mon SqlDataAdapter j'ai défini une table
avec plusieurs relations et donc des alias, il n'y a pas moyen que les
procédures update, insert et delete se construisent.

Voilà un exemple light de ma requête

SELECT T_affiche.*, T_liste_affiche.hauteur_affiche AS Haut,
T_liste_affiche.largeur_affiche AS Larg
FROM T_affiche INNER JOIN
T_liste_affiche ON T_affiche.num_dimension_affiche =
T_liste_affiche.num_dimension_affiche

Elle s'exécute bien !!

Mes deux tables ont des clefs primaires et les types de données sont
corrects.

Le message d'erreur pour les procédures : La requête d'origine a une liste
de sélection qui contient des colonnes de plusieurs tables. L'instruction ne
peut pas être générée automatiquement pour ce genre de requête.

Cela veut il dire que je doit absolument utiliser des procédures stockées et
les faire moi même ?

Si oui y a t'il un assistant pour aider à leur rédaction pour aller plus
vite car j'ai pas mal de traitement à faire !


2)
Je souhaiterais avoir des infos afin de bine comprendre le dataset et le
dataset typé et le dataview le meilleur moment ou utiliser l'un ou l'autre,
les problèmes d'utilisation de l'un ou l'autre.

Merci

5 réponses

Avatar
Fred BROUARD
évite le multi postage !!!

l'usage de l'étoile est à proscrire pour l'exploitation des requêtes.

En l'occurence dans ce cas précis, il conduit à l'erreur, car des colonnes de
différentes table ayant le même nom conduisent à une ambiguité.

Il faut donc :
1) spécifier littéralement TOUTES les colonnes
2) lorsque deux (ou plusieurs) colonnes ont le même nom, faire usage d'un surnom
en utilisant le mot clef AS.

A lire :
http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_as

A +



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


LOIC a écrit:
Bonjour,

VB.NET

1)
Sur mon formulaire je met une SqlConnection, puis un SqlDataAdapter et
finalement un Dataset ton fonctionne parfaitement quand je travaille sur une
seule table.

Mon problème c'est lorsque dans mon SqlDataAdapter j'ai défini une table
avec plusieurs relations et donc des alias, il n'y a pas moyen que les
procédures update, insert et delete se construisent.

Voilà un exemple light de ma requête

SELECT T_affiche.*, T_liste_affiche.hauteur_affiche AS Haut,
T_liste_affiche.largeur_affiche AS Larg
FROM T_affiche INNER JOIN
T_liste_affiche ON T_affiche.num_dimension_affiche > T_liste_affiche.num_dimension_affiche

Elle s'exécute bien !!

Mes deux tables ont des clefs primaires et les types de données sont
corrects.

Le message d'erreur pour les procédures : La requête d'origine a une liste
de sélection qui contient des colonnes de plusieurs tables. L'instruction ne
peut pas être générée automatiquement pour ce genre de requête.

Cela veut il dire que je doit absolument utiliser des procédures stockées et
les faire moi même ?

Si oui y a t'il un assistant pour aider à leur rédaction pour aller plus
vite car j'ai pas mal de traitement à faire !


2)
Je souhaiterais avoir des infos afin de bine comprendre le dataset et le
dataset typé et le dataview le meilleur moment ou utiliser l'un ou l'autre,
les problèmes d'utilisation de l'un ou l'autre.

Merci




Avatar
LOIC
J'avais déjà essayé en spécifiant les colonnes et donc j'ai refait une autre
requête sur quelques données mais toujours avec une table liée et j'ai
toujours le même problème, la génération de l'update insert et delete ne se
fait pas donc je voudrais savoir si le problème n'est pas tout simplement
que l'assistant configurateur ne le permette pas et oblige la création de
procédure stockées.

La requête que j'ai refaite et qui s'exécute bien mais pose souscis avec
l'assistant !!

SELECT
T_affiche.num_affiche,
T_affiche.titre_original,
T_affiche.num_dimension_affiche,
T_liste_affiche.num_dimension_affiche AS Expr1,
T_liste_affiche.hauteur_affiche AS haut,
T_liste_affiche.largeur_affiche AS larg
FROM
T_affiche INNER
JOIN
T_liste_affiche ON
T_affiche.num_dimension_affiche T_liste_affiche.num_dimension_affiche


"Fred BROUARD" a écrit dans le message de
news:
évite le multi postage !!!

l'usage de l'étoile est à proscrire pour l'exploitation des requêtes.

En l'occurence dans ce cas précis, il conduit à l'erreur, car des colonnes


de
différentes table ayant le même nom conduisent à une ambiguité.

Il faut donc :
1) spécifier littéralement TOUTES les colonnes
2) lorsque deux (ou plusieurs) colonnes ont le même nom, faire usage d'un


surnom
en utilisant le mot clef AS.

A lire :
http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_as

A +



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


LOIC a écrit:
> Bonjour,
>
> VB.NET
>
> 1)
> Sur mon formulaire je met une SqlConnection, puis un SqlDataAdapter et
> finalement un Dataset ton fonctionne parfaitement quand je travaille sur


une
> seule table.
>
> Mon problème c'est lorsque dans mon SqlDataAdapter j'ai défini une table
> avec plusieurs relations et donc des alias, il n'y a pas moyen que les
> procédures update, insert et delete se construisent.
>
> Voilà un exemple light de ma requête
>
> SELECT T_affiche.*, T_liste_affiche.hauteur_affiche AS Haut,
> T_liste_affiche.largeur_affiche AS Larg
> FROM T_affiche INNER JOIN
> T_liste_affiche ON T_affiche.num_dimension_affiche


> > T_liste_affiche.num_dimension_affiche
>
> Elle s'exécute bien !!
>
> Mes deux tables ont des clefs primaires et les types de données sont
> corrects.
>
> Le message d'erreur pour les procédures : La requête d'origine a une


liste
> de sélection qui contient des colonnes de plusieurs tables.


L'instruction ne
> peut pas être générée automatiquement pour ce genre de requête.
>
> Cela veut il dire que je doit absolument utiliser des procédures


stockées et
> les faire moi même ?
>
> Si oui y a t'il un assistant pour aider à leur rédaction pour aller plus
> vite car j'ai pas mal de traitement à faire !
>
>
> 2)
> Je souhaiterais avoir des infos afin de bine comprendre le dataset et le
> dataset typé et le dataview le meilleur moment ou utiliser l'un ou


l'autre,
> les problèmes d'utilisation de l'un ou l'autre.
>
> Merci
>
>



Avatar
RABILLOUD JMARC [MVP]
Bonsoir,

1) Tu as deux solutions. Tu utilises un seul DataAdapter qui remplit une
DataTable. Dans ce cas tu dois créer les procédures stockées
correspondantes. En faisant bien attention car selon les cas on agit d'abord
sur la table Enfant puis sur la table parent, soit l'inverse (pour éviter
des cascades malencontreuses.
Tu met tes deux tables dans ton dataset en utilisant deux DataAdapter. Dans
ce cas chaque dataadapter saura générer ses requêtes. Il conviendra tout de
même à faire attention dans l'ordre des appels Update.

2)
A lire sur le sujet
http://dotnet.developpez.com/cours/ADO.NET/
Avatar
diggingbill
>
Si oui y a t'il un assistant pour aider à leur rédaction pour aller plus
vite car j'ai pas mal de traitement à faire !




Vas à cette adresse et télécharge un outil nommé OlyMars
http://blogs.msdn.com/olymars/

Tu as les explications ici :
http://www.microsoft.com/france/msdn/technologies/outils/Olymars/default.asp?lang=fr

Avec cela tu vas booster ton développement su .NET ; jettes un coup d'oeil
sur les procédures stockées générées et inspires-t'en pour écrire les
tiennes.
Et enfin, achete le livre de Fred BROUARD, il va t'aider à comprendre
pourquoi tu dois faire certaines choses d'une certaine manière et pas
autrement.
Espérant t'avoir aidé
digging !
Avatar
LOIC
Un grand merci je vais voir tout cela très attentivement


"diggingbill" a écrit dans le message de
news:%
>
> Si oui y a t'il un assistant pour aider à leur rédaction pour aller plus
> vite car j'ai pas mal de traitement à faire !
>

Vas à cette adresse et télécharge un outil nommé OlyMars
http://blogs.msdn.com/olymars/

Tu as les explications ici :



http://www.microsoft.com/france/msdn/technologies/outils/Olymars/default.asp?lang=fr

Avec cela tu vas booster ton développement su .NET ; jettes un coup d'oeil
sur les procédures stockées générées et inspires-t'en pour écrire les
tiennes.
Et enfin, achete le livre de Fred BROUARD, il va t'aider à comprendre
pourquoi tu dois faire certaines choses d'une certaine manière et pas
autrement.
Espérant t'avoir aidé
digging !