Depuis une application VBA Access, je voudrais créer une nouvelle colonne
dans une table non vide sur SQL Server 2005.
J'utilise l'instruction ADOX suivante pour définir les propriétés de ma
colonne et pour la créer:
With col
.Name = "carte"
.Type = 11
.DefinedSize = 0
End With
TableModif.Columns.Append col
Mais lors de l'exécution, j'obtiens le message d'erreur suivant :
ALTER TABLE permet d'ajouter uniquement des colonnes pouvant contenir des
valeurs NULL, des colonnes ayant une définition DEFAULT, des colonnes
identité ou de type timestamp ; si aucune des conditions précédentes n'est
satisfaite, la table doit être vide pour autoriser l'ajout de cette colonne.
La colonne 'carte' ne peut pas être ajoutée à une table non vide 'acheteur'
car elle ne répond pas à ces conditions
Y a t'il une formule magique ou une requete SQL qui permet d'ajouter cette
colonne sans perdre les données existantes de la table ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
SQLpro [MVP]
lyris a écrit :
Depuis une application VBA Access, je voudrais créer une nouvelle colonne dans une table non vide sur SQL Server 2005.
J'utilise l'instruction ADOX suivante pour définir les propriétés de ma colonne et pour la créer: With col .Name = "carte" .Type = 11 .DefinedSize = 0 End With TableModif.Columns.Append col
Mais lors de l'exécution, j'obtiens le message d'erreur suivant :
ALTER TABLE permet d'ajouter uniquement des colonnes pouvant contenir des valeurs NULL, des colonnes ayant une définition DEFAULT, des colonnes identité ou de type timestamp ; si aucune des conditions précédentes n'est satisfaite, la table doit être vide pour autoriser l'ajout de cette colonne. La colonne 'carte' ne peut pas être ajoutée à une table non vide 'acheteur' car elle ne répond pas à ces conditions
Y a t'il une formule magique ou une requete SQL qui permet d'ajouter cette colonne sans perdre les données existantes de la table ?
même remarque que précédemment : connaître et maitriser le langage SQL ...
ALTER TABLE <nom_table> ADD <nom_colonne> carte <typeSQL>
A +
Merci d'avance
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
lyris a écrit :
Depuis une application VBA Access, je voudrais créer une nouvelle colonne
dans une table non vide sur SQL Server 2005.
J'utilise l'instruction ADOX suivante pour définir les propriétés de ma
colonne et pour la créer:
With col
.Name = "carte"
.Type = 11
.DefinedSize = 0
End With
TableModif.Columns.Append col
Mais lors de l'exécution, j'obtiens le message d'erreur suivant :
ALTER TABLE permet d'ajouter uniquement des colonnes pouvant contenir des
valeurs NULL, des colonnes ayant une définition DEFAULT, des colonnes
identité ou de type timestamp ; si aucune des conditions précédentes n'est
satisfaite, la table doit être vide pour autoriser l'ajout de cette colonne.
La colonne 'carte' ne peut pas être ajoutée à une table non vide 'acheteur'
car elle ne répond pas à ces conditions
Y a t'il une formule magique ou une requete SQL qui permet d'ajouter cette
colonne sans perdre les données existantes de la table ?
même remarque que précédemment : connaître et maitriser le langage SQL ...
ALTER TABLE <nom_table>
ADD <nom_colonne> carte <typeSQL>
A +
Merci d'avance
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Depuis une application VBA Access, je voudrais créer une nouvelle colonne dans une table non vide sur SQL Server 2005.
J'utilise l'instruction ADOX suivante pour définir les propriétés de ma colonne et pour la créer: With col .Name = "carte" .Type = 11 .DefinedSize = 0 End With TableModif.Columns.Append col
Mais lors de l'exécution, j'obtiens le message d'erreur suivant :
ALTER TABLE permet d'ajouter uniquement des colonnes pouvant contenir des valeurs NULL, des colonnes ayant une définition DEFAULT, des colonnes identité ou de type timestamp ; si aucune des conditions précédentes n'est satisfaite, la table doit être vide pour autoriser l'ajout de cette colonne. La colonne 'carte' ne peut pas être ajoutée à une table non vide 'acheteur' car elle ne répond pas à ces conditions
Y a t'il une formule magique ou une requete SQL qui permet d'ajouter cette colonne sans perdre les données existantes de la table ?
même remarque que précédemment : connaître et maitriser le langage SQL ...
ALTER TABLE <nom_table> ADD <nom_colonne> carte <typeSQL>
A +
Merci d'avance
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Patrice
Cf la solution proposée par "SQL Pro" plus éventuellement ajouter une valeur par défaut si la colonne est NOT NULL.
Comme le message l'indique le problème est que la colonne doit : - soit autoriser la valeur NULL - soit avoir une valeur par défaut
(si la valeur NULL n'est pas autorisée mais qu'aucune valeur par défaut n'est définie, l'ajout de la colonne violerait d'emblée la contrainte NOT NULL). -- Patrice
"lyris" a écrit dans le message de news:
Depuis une application VBA Access, je voudrais créer une nouvelle colonne dans une table non vide sur SQL Server 2005.
J'utilise l'instruction ADOX suivante pour définir les propriétés de ma colonne et pour la créer: With col .Name = "carte" .Type = 11 .DefinedSize = 0 End With TableModif.Columns.Append col
Mais lors de l'exécution, j'obtiens le message d'erreur suivant :
ALTER TABLE permet d'ajouter uniquement des colonnes pouvant contenir des valeurs NULL, des colonnes ayant une définition DEFAULT, des colonnes identité ou de type timestamp ; si aucune des conditions précédentes n'est satisfaite, la table doit être vide pour autoriser l'ajout de cette colonne. La colonne 'carte' ne peut pas être ajoutée à une table non vide 'acheteur' car elle ne répond pas à ces conditions
Y a t'il une formule magique ou une requete SQL qui permet d'ajouter cette colonne sans perdre les données existantes de la table ?
Merci d'avance
Cf la solution proposée par "SQL Pro" plus éventuellement ajouter une valeur
par défaut si la colonne est NOT NULL.
Comme le message l'indique le problème est que la colonne doit :
- soit autoriser la valeur NULL
- soit avoir une valeur par défaut
(si la valeur NULL n'est pas autorisée mais qu'aucune valeur par défaut
n'est définie, l'ajout de la colonne violerait d'emblée la contrainte NOT
NULL).
--
Patrice
"lyris" <lyris@discussions.microsoft.com> a écrit dans le message de news:
F82A414D-53F0-4C43-98C8-5C20B549A15F@microsoft.com...
Depuis une application VBA Access, je voudrais créer une nouvelle colonne
dans une table non vide sur SQL Server 2005.
J'utilise l'instruction ADOX suivante pour définir les propriétés de ma
colonne et pour la créer:
With col
.Name = "carte"
.Type = 11
.DefinedSize = 0
End With
TableModif.Columns.Append col
Mais lors de l'exécution, j'obtiens le message d'erreur suivant :
ALTER TABLE permet d'ajouter uniquement des colonnes pouvant contenir des
valeurs NULL, des colonnes ayant une définition DEFAULT, des colonnes
identité ou de type timestamp ; si aucune des conditions précédentes n'est
satisfaite, la table doit être vide pour autoriser l'ajout de cette
colonne.
La colonne 'carte' ne peut pas être ajoutée à une table non vide
'acheteur'
car elle ne répond pas à ces conditions
Y a t'il une formule magique ou une requete SQL qui permet d'ajouter cette
colonne sans perdre les données existantes de la table ?
Cf la solution proposée par "SQL Pro" plus éventuellement ajouter une valeur par défaut si la colonne est NOT NULL.
Comme le message l'indique le problème est que la colonne doit : - soit autoriser la valeur NULL - soit avoir une valeur par défaut
(si la valeur NULL n'est pas autorisée mais qu'aucune valeur par défaut n'est définie, l'ajout de la colonne violerait d'emblée la contrainte NOT NULL). -- Patrice
"lyris" a écrit dans le message de news:
Depuis une application VBA Access, je voudrais créer une nouvelle colonne dans une table non vide sur SQL Server 2005.
J'utilise l'instruction ADOX suivante pour définir les propriétés de ma colonne et pour la créer: With col .Name = "carte" .Type = 11 .DefinedSize = 0 End With TableModif.Columns.Append col
Mais lors de l'exécution, j'obtiens le message d'erreur suivant :
ALTER TABLE permet d'ajouter uniquement des colonnes pouvant contenir des valeurs NULL, des colonnes ayant une définition DEFAULT, des colonnes identité ou de type timestamp ; si aucune des conditions précédentes n'est satisfaite, la table doit être vide pour autoriser l'ajout de cette colonne. La colonne 'carte' ne peut pas être ajoutée à une table non vide 'acheteur' car elle ne répond pas à ces conditions
Y a t'il une formule magique ou une requete SQL qui permet d'ajouter cette colonne sans perdre les données existantes de la table ?
Merci d'avance
SQLpro [MVP]
Patrice a écrit :
Cf la solution proposée par "SQL Pro" plus éventuellement ajouter une valeur par défaut si la colonne est NOT NULL.
Comme le message l'indique le problème est que la colonne doit : - soit autoriser la valeur NULL - soit avoir une valeur par défaut
dans ce dernier cas il faut ajouter l'option WITH VALUES pour forcer les valeurs dans les tuples préexistants.
A +
(si la valeur NULL n'est pas autorisée mais qu'aucune valeur par défaut n'est définie, l'ajout de la colonne violerait d'emblée la contrainte NOT NULL).
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Patrice a écrit :
Cf la solution proposée par "SQL Pro" plus éventuellement ajouter une valeur
par défaut si la colonne est NOT NULL.
Comme le message l'indique le problème est que la colonne doit :
- soit autoriser la valeur NULL
- soit avoir une valeur par défaut
dans ce dernier cas il faut ajouter l'option WITH VALUES pour forcer les
valeurs dans les tuples préexistants.
A +
(si la valeur NULL n'est pas autorisée mais qu'aucune valeur par défaut
n'est définie, l'ajout de la colonne violerait d'emblée la contrainte NOT
NULL).
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Cf la solution proposée par "SQL Pro" plus éventuellement ajouter une valeur par défaut si la colonne est NOT NULL.
Comme le message l'indique le problème est que la colonne doit : - soit autoriser la valeur NULL - soit avoir une valeur par défaut
dans ce dernier cas il faut ajouter l'option WITH VALUES pour forcer les valeurs dans les tuples préexistants.
A +
(si la valeur NULL n'est pas autorisée mais qu'aucune valeur par défaut n'est définie, l'ajout de la colonne violerait d'emblée la contrainte NOT NULL).
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Med Bouchenafa
Il faut ajouter un attribut adColNullable comme dans l'exemple suivant With col .Name = "carte" .Type = 11 .DefinedSize = 0 .Attributes = adColNullable End With TableModif.Columns.Append col
Une fois la colonne ajoutée, mets à jour les valeurs NULL
-- Bien cordialement Med Bouchenafa
"lyris" a écrit dans le message de news:
Depuis une application VBA Access, je voudrais créer une nouvelle colonne dans une table non vide sur SQL Server 2005.
J'utilise l'instruction ADOX suivante pour définir les propriétés de ma colonne et pour la créer: With col .Name = "carte" .Type = 11 .DefinedSize = 0 End With TableModif.Columns.Append col
Mais lors de l'exécution, j'obtiens le message d'erreur suivant :
ALTER TABLE permet d'ajouter uniquement des colonnes pouvant contenir des valeurs NULL, des colonnes ayant une définition DEFAULT, des colonnes identité ou de type timestamp ; si aucune des conditions précédentes n'est satisfaite, la table doit être vide pour autoriser l'ajout de cette colonne. La colonne 'carte' ne peut pas être ajoutée à une table non vide 'acheteur' car elle ne répond pas à ces conditions
Y a t'il une formule magique ou une requete SQL qui permet d'ajouter cette colonne sans perdre les données existantes de la table ?
Merci d'avance
Il faut ajouter un attribut adColNullable comme dans l'exemple suivant
With col
.Name = "carte"
.Type = 11
.DefinedSize = 0
.Attributes = adColNullable
End With
TableModif.Columns.Append col
Une fois la colonne ajoutée, mets à jour les valeurs NULL
--
Bien cordialement
Med Bouchenafa
"lyris" <lyris@discussions.microsoft.com> a écrit dans le message de news:
F82A414D-53F0-4C43-98C8-5C20B549A15F@microsoft.com...
Depuis une application VBA Access, je voudrais créer une nouvelle colonne
dans une table non vide sur SQL Server 2005.
J'utilise l'instruction ADOX suivante pour définir les propriétés de ma
colonne et pour la créer:
With col
.Name = "carte"
.Type = 11
.DefinedSize = 0
End With
TableModif.Columns.Append col
Mais lors de l'exécution, j'obtiens le message d'erreur suivant :
ALTER TABLE permet d'ajouter uniquement des colonnes pouvant contenir des
valeurs NULL, des colonnes ayant une définition DEFAULT, des colonnes
identité ou de type timestamp ; si aucune des conditions précédentes n'est
satisfaite, la table doit être vide pour autoriser l'ajout de cette
colonne.
La colonne 'carte' ne peut pas être ajoutée à une table non vide
'acheteur'
car elle ne répond pas à ces conditions
Y a t'il une formule magique ou une requete SQL qui permet d'ajouter cette
colonne sans perdre les données existantes de la table ?
Il faut ajouter un attribut adColNullable comme dans l'exemple suivant With col .Name = "carte" .Type = 11 .DefinedSize = 0 .Attributes = adColNullable End With TableModif.Columns.Append col
Une fois la colonne ajoutée, mets à jour les valeurs NULL
-- Bien cordialement Med Bouchenafa
"lyris" a écrit dans le message de news:
Depuis une application VBA Access, je voudrais créer une nouvelle colonne dans une table non vide sur SQL Server 2005.
J'utilise l'instruction ADOX suivante pour définir les propriétés de ma colonne et pour la créer: With col .Name = "carte" .Type = 11 .DefinedSize = 0 End With TableModif.Columns.Append col
Mais lors de l'exécution, j'obtiens le message d'erreur suivant :
ALTER TABLE permet d'ajouter uniquement des colonnes pouvant contenir des valeurs NULL, des colonnes ayant une définition DEFAULT, des colonnes identité ou de type timestamp ; si aucune des conditions précédentes n'est satisfaite, la table doit être vide pour autoriser l'ajout de cette colonne. La colonne 'carte' ne peut pas être ajoutée à une table non vide 'acheteur' car elle ne répond pas à ces conditions
Y a t'il une formule magique ou une requete SQL qui permet d'ajouter cette colonne sans perdre les données existantes de la table ?
Merci d'avance
lyris
D'abord, un grand merci pour vos réponses, la solution adColNullable fonctionne mais en avançant dans mon projet, je m'aperçois que le nombre de propriétés de l'objet colonne est beaucoup moins important lorsqu'il est attaché à une base SQL Server que sur ma bonne vieille base Access. Il semble donc que je ne fait que repousser mon problème, je ferai mieux d'abandonner mon ADOX et de me pencher sérieusement sur le Transact SQL pour m'attaquer aux structures de bases. D'ailleurs, si vous avez de la doc ou si vous connaissez un bon bouquin à ce sujet, n'hésitez pas à m'en faire part. Merci encore
D'abord, un grand merci pour vos réponses,
la solution adColNullable fonctionne mais en avançant dans mon projet, je
m'aperçois que le nombre de propriétés de l'objet colonne est beaucoup moins
important lorsqu'il est attaché à une base SQL Server que sur ma bonne
vieille base Access.
Il semble donc que je ne fait que repousser mon problème, je ferai mieux
d'abandonner mon ADOX et de me pencher sérieusement sur le Transact SQL pour
m'attaquer aux structures de bases.
D'ailleurs, si vous avez de la doc ou si vous connaissez un bon bouquin à ce
sujet, n'hésitez pas à m'en faire part.
Merci encore
D'abord, un grand merci pour vos réponses, la solution adColNullable fonctionne mais en avançant dans mon projet, je m'aperçois que le nombre de propriétés de l'objet colonne est beaucoup moins important lorsqu'il est attaché à une base SQL Server que sur ma bonne vieille base Access. Il semble donc que je ne fait que repousser mon problème, je ferai mieux d'abandonner mon ADOX et de me pencher sérieusement sur le Transact SQL pour m'attaquer aux structures de bases. D'ailleurs, si vous avez de la doc ou si vous connaissez un bon bouquin à ce sujet, n'hésitez pas à m'en faire part. Merci encore
SQLpro [MVP]
lyris a écrit :
D'abord, un grand merci pour vos réponses, la solution adColNullable fonctionne mais en avançant dans mon projet, je m'aperçois que le nombre de propriétés de l'objet colonne est beaucoup moins important lorsqu'il est attaché à une base SQL Server que sur ma bonne vieille base Access. Il semble donc que je ne fait que repousser mon problème, je ferai mieux d'abandonner mon ADOX et de me pencher sérieusement sur le Transact SQL pour m'attaquer aux structures de bases. D'ailleurs, si vous avez de la doc ou si vous connaissez un bon bouquin à ce sujet, n'hésitez pas à m'en faire part.
1) gratuit : mon site sqlpro http://sqlpro.developpez.com/ 2) gratuit : mon article sur Transact SQL http://sqlpro.developpez.com/cours/sqlserver/transactsql/ 3) payant, mes bouquins sur SQL (le premier épuisé étant téléchargeable à 15 € sur http://www.numilog.com/fiche_livre.asp?PIDU63) 4) payant : des bouquins plus spécialisés sur SQL Server dont le plus complet est celui de Marc Israël : http://www.developpez.net/forums/showthread.php?t830
A +
Merci encore
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
lyris a écrit :
D'abord, un grand merci pour vos réponses,
la solution adColNullable fonctionne mais en avançant dans mon projet, je
m'aperçois que le nombre de propriétés de l'objet colonne est beaucoup moins
important lorsqu'il est attaché à une base SQL Server que sur ma bonne
vieille base Access.
Il semble donc que je ne fait que repousser mon problème, je ferai mieux
d'abandonner mon ADOX et de me pencher sérieusement sur le Transact SQL pour
m'attaquer aux structures de bases.
D'ailleurs, si vous avez de la doc ou si vous connaissez un bon bouquin à ce
sujet, n'hésitez pas à m'en faire part.
1) gratuit : mon site sqlpro http://sqlpro.developpez.com/
2) gratuit : mon article sur Transact SQL
http://sqlpro.developpez.com/cours/sqlserver/transactsql/
3) payant, mes bouquins sur SQL (le premier épuisé étant téléchargeable
à 15 € sur http://www.numilog.com/fiche_livre.asp?PIDU63)
4) payant : des bouquins plus spécialisés sur SQL Server dont le plus
complet est celui de Marc Israël :
http://www.developpez.net/forums/showthread.php?t830
A +
Merci encore
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
D'abord, un grand merci pour vos réponses, la solution adColNullable fonctionne mais en avançant dans mon projet, je m'aperçois que le nombre de propriétés de l'objet colonne est beaucoup moins important lorsqu'il est attaché à une base SQL Server que sur ma bonne vieille base Access. Il semble donc que je ne fait que repousser mon problème, je ferai mieux d'abandonner mon ADOX et de me pencher sérieusement sur le Transact SQL pour m'attaquer aux structures de bases. D'ailleurs, si vous avez de la doc ou si vous connaissez un bon bouquin à ce sujet, n'hésitez pas à m'en faire part.
1) gratuit : mon site sqlpro http://sqlpro.developpez.com/ 2) gratuit : mon article sur Transact SQL http://sqlpro.developpez.com/cours/sqlserver/transactsql/ 3) payant, mes bouquins sur SQL (le premier épuisé étant téléchargeable à 15 € sur http://www.numilog.com/fiche_livre.asp?PIDU63) 4) payant : des bouquins plus spécialisés sur SQL Server dont le plus complet est celui de Marc Israël : http://www.developpez.net/forums/showthread.php?t830
A +
Merci encore
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************