Bnjour,
J'ai des problèmes lorsque j'essai d'insérer des infos ds
ma base, voici ma requette :
D'après le compilateur le problème provient du dernier
champs : CHARGES, je l'ai déclaré en INT dans ma base et
il ne veut par consequent pas mettre du .TEXT, j'ai
essayé de le convertir en utilisant VAL() mais toujours
pareil. Est ce que qqun à une idée ?
P.S. : Mon premier champs est un AUTO INCREMENT comment
l'exprimer en sql car ('', 'cpname.text'...) ne
fonctionne pas.
Merci d'avance
Tdelob
Bnjour,
J'ai des problèmes lorsque j'essai d'insérer des infos ds
ma base, voici ma requette :
D'après le compilateur le problème provient du dernier
champs : CHARGES, je l'ai déclaré en INT dans ma base et
il ne veut par consequent pas mettre du .TEXT, j'ai
essayé de le convertir en utilisant VAL() mais toujours
pareil. Est ce que qqun à une idée ?
P.S. : Mon premier champs est un AUTO INCREMENT comment
l'exprimer en sql car ('', 'cpname.text'...) ne
fonctionne pas.
Merci d'avance
Tdelob
Bnjour,
J'ai des problèmes lorsque j'essai d'insérer des infos ds
ma base, voici ma requette :
D'après le compilateur le problème provient du dernier
champs : CHARGES, je l'ai déclaré en INT dans ma base et
il ne veut par consequent pas mettre du .TEXT, j'ai
essayé de le convertir en utilisant VAL() mais toujours
pareil. Est ce que qqun à une idée ?
P.S. : Mon premier champs est un AUTO INCREMENT comment
l'exprimer en sql car ('', 'cpname.text'...) ne
fonctionne pas.
Merci d'avance
Tdelob
Autre-chose, dans un INSERT, il vaut mieux toujours lister les champs avant
le VALUES, rien ne te garantit autrement l'ordre réel des champs au niveau
de l'implémentation physique.
Autre-chose, dans un INSERT, il vaut mieux toujours lister les champs avant
le VALUES, rien ne te garantit autrement l'ordre réel des champs au niveau
de l'implémentation physique.
Autre-chose, dans un INSERT, il vaut mieux toujours lister les champs avant
le VALUES, rien ne te garantit autrement l'ordre réel des champs au niveau
de l'implémentation physique.
Nicolas LETULLIER a écrit:
> Autre-chose, dans un INSERT, il vaut mieux toujours lister les champs
> le VALUES, rien ne te garantit autrement l'ordre réel des champs au
> de l'implémentation physique.
faux... en effet SQL conserve la position ordinale de la colonne lors de
la création. Ceci étant normatif...
Exemple :
CREATE TABLE T_testCol
(col1 int,
col2 int,
col3 int)
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
ALTER TABLE T_testCol ADD col4 int
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
col4 4
ALTER TABLE T_testCol DROP COLUMN col2
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col3 3
col4 4
CQFD !
A +
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************
>
Nicolas LETULLIER a écrit:
> Autre-chose, dans un INSERT, il vaut mieux toujours lister les champs
> le VALUES, rien ne te garantit autrement l'ordre réel des champs au
> de l'implémentation physique.
faux... en effet SQL conserve la position ordinale de la colonne lors de
la création. Ceci étant normatif...
Exemple :
CREATE TABLE T_testCol
(col1 int,
col2 int,
col3 int)
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
ALTER TABLE T_testCol ADD col4 int
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
col4 4
ALTER TABLE T_testCol DROP COLUMN col2
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col3 3
col4 4
CQFD !
A +
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto:brouardf@club-internet.fr ******************
>
Nicolas LETULLIER a écrit:
> Autre-chose, dans un INSERT, il vaut mieux toujours lister les champs
> le VALUES, rien ne te garantit autrement l'ordre réel des champs au
> de l'implémentation physique.
faux... en effet SQL conserve la position ordinale de la colonne lors de
la création. Ceci étant normatif...
Exemple :
CREATE TABLE T_testCol
(col1 int,
col2 int,
col3 int)
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
ALTER TABLE T_testCol ADD col4 int
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
col4 4
ALTER TABLE T_testCol DROP COLUMN col2
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col3 3
col4 4
CQFD !
A +
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************
>
Décidément,
Il n'y a cependant pas que les normes qui comptent Fred, il y a aussi la
pratique. Imagine que la personne ait son MLD d'origine documenté, mais
qu'après un certain temps, un autre développeur ait, par exemple, supprimé
une colonne de type INT simple pour rajouter un INT IDENTITY (pour faire le
lien avec le post de Jean JUILLARD), celle-ci se retrouve alors en dernière
position. L'ordre des colonnes documenté est donc différent de l'ordre
physique réel, sauf très grande rigueur de l'équipe. Et dans ce cas là, les
anciennes requêtes INSERT doivent être reprises pour changer l'ordre des
colonnes.
Que faut-il donc ? Faire confiance à tous les développeurs ayant manipulé la
base de données pour que la documentation soit à jour ou bien lister les
champs explicitement ? Personnellement, j'opte pour la seconde solution,
quitte à perdre un peu de temps.
Nicolas.
"Fred BROUARD" a écrit dans le message de
news:Nicolas LETULLIER a écrit:Autre-chose, dans un INSERT, il vaut mieux toujours lister les champs
avantle VALUES, rien ne te garantit autrement l'ordre réel des champs au
niveaude l'implémentation physique.
faux... en effet SQL conserve la position ordinale de la colonne lors de
la création. Ceci étant normatif...
Exemple :
CREATE TABLE T_testCol
(col1 int,
col2 int,
col3 int)
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
ALTER TABLE T_testCol ADD col4 int
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
col4 4
ALTER TABLE T_testCol DROP COLUMN col2
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col3 3
col4 4
CQFD !
A +
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************
Décidément,
Il n'y a cependant pas que les normes qui comptent Fred, il y a aussi la
pratique. Imagine que la personne ait son MLD d'origine documenté, mais
qu'après un certain temps, un autre développeur ait, par exemple, supprimé
une colonne de type INT simple pour rajouter un INT IDENTITY (pour faire le
lien avec le post de Jean JUILLARD), celle-ci se retrouve alors en dernière
position. L'ordre des colonnes documenté est donc différent de l'ordre
physique réel, sauf très grande rigueur de l'équipe. Et dans ce cas là, les
anciennes requêtes INSERT doivent être reprises pour changer l'ordre des
colonnes.
Que faut-il donc ? Faire confiance à tous les développeurs ayant manipulé la
base de données pour que la documentation soit à jour ou bien lister les
champs explicitement ? Personnellement, j'opte pour la seconde solution,
quitte à perdre un peu de temps.
Nicolas.
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:enXdqMwoDHA.2500@TK2MSFTNGP10.phx.gbl...
Nicolas LETULLIER a écrit:
Autre-chose, dans un INSERT, il vaut mieux toujours lister les champs
avant
le VALUES, rien ne te garantit autrement l'ordre réel des champs au
niveau
de l'implémentation physique.
faux... en effet SQL conserve la position ordinale de la colonne lors de
la création. Ceci étant normatif...
Exemple :
CREATE TABLE T_testCol
(col1 int,
col2 int,
col3 int)
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
ALTER TABLE T_testCol ADD col4 int
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
col4 4
ALTER TABLE T_testCol DROP COLUMN col2
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col3 3
col4 4
CQFD !
A +
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto:brouardf@club-internet.fr ******************
Décidément,
Il n'y a cependant pas que les normes qui comptent Fred, il y a aussi la
pratique. Imagine que la personne ait son MLD d'origine documenté, mais
qu'après un certain temps, un autre développeur ait, par exemple, supprimé
une colonne de type INT simple pour rajouter un INT IDENTITY (pour faire le
lien avec le post de Jean JUILLARD), celle-ci se retrouve alors en dernière
position. L'ordre des colonnes documenté est donc différent de l'ordre
physique réel, sauf très grande rigueur de l'équipe. Et dans ce cas là, les
anciennes requêtes INSERT doivent être reprises pour changer l'ordre des
colonnes.
Que faut-il donc ? Faire confiance à tous les développeurs ayant manipulé la
base de données pour que la documentation soit à jour ou bien lister les
champs explicitement ? Personnellement, j'opte pour la seconde solution,
quitte à perdre un peu de temps.
Nicolas.
"Fred BROUARD" a écrit dans le message de
news:Nicolas LETULLIER a écrit:Autre-chose, dans un INSERT, il vaut mieux toujours lister les champs
avantle VALUES, rien ne te garantit autrement l'ordre réel des champs au
niveaude l'implémentation physique.
faux... en effet SQL conserve la position ordinale de la colonne lors de
la création. Ceci étant normatif...
Exemple :
CREATE TABLE T_testCol
(col1 int,
col2 int,
col3 int)
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
ALTER TABLE T_testCol ADD col4 int
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col2 2
col3 3
col4 4
ALTER TABLE T_testCol DROP COLUMN col2
SELECT CAST(COLUMN_NAME AS VARCHAR(16)) AS COL_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_testCol'
COL_NAME ORDINAL_POSITION
---------------- ----------------
col1 1
col3 3
col4 4
CQFD !
A +
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / 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
****************** mailto: ******************