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

probleme sur champ de table

3 réponses
Avatar
michel_bdx
Bonjour

Voila vous m'avez aidé à réaliser ce code et cela marchait jusqu'à maintenant

j'explique:

j'ai une base applicative du style c:\appli\locale\pomme\pomme_appli.mdb
puis une base de données ou se trouve toutes mes tables du style
c:\appli\locale\pomme\data\pomme_data.mdb

donc de la base applicative pomme_appli.mdb je veux changer la longueur d'un
champ "rub_code" dans une table qui s'appelle "rubrique" et qui se trouve
dans pomme_data.mdb

voila ce que j'ai écrit grace à vous
Sub Chgchamp(tblName As String, fldName As String, fldType As String,
fldLenght As Long, Ajout As Boolean)
'Modification d'un champ
Dim dft As TableDef
Dim dbs As Database
Dim db As Database
'Set dft = CurrentDb.TableDefs(tblName)
'Creation d'un champ
Set dbs = OpenDatabase("c:\appli\pomme2.mdb")
If dbs.TableDefs(tblName).Fields(fldName).Size < 4 Then
dbs.Execute "ALTER TABLE [" & tblName & "] ADD COLUMN [" & fldName &
"xyz] TEXT(5) not NULL CONSTRAINT [" & fldName & "xyz] UNIQUE;"
dbs.Execute "UPDATE [" & tblName & "] Set [" & fldName & "xyz] = [" &
fldName & "]"
dbs.Execute "DROP INDEX [" & fldName & "] ON [" & tblName & "];"
dbs.Execute "ALTER TABLE [" & tblName & "] DROP COLUMN [" & fldName & "]
;"
Set db = OpenDatabase("c:\appli\pomme2.mdb")
db.TableDefs(tblName).Fields(fldName & "xyz").Required = True 'Null
interdit
db.TableDefs(tblName).Fields(fldName & "xyz").AllowZeroLength = False
db.TableDefs(tblName).Fields(fldName & "xyz").Name = fldName
Else
MsgBox "toto"
End If
dbs.Close
db.Close
End Sub


je declenche cela à partir d'une ligne du style
call chgchamp(("rubrique", "rub_code", "dbText", 5, True)

cela fonctionnait et maintenant cela ne fonctionne plus

sniff pourquoi dites moi pourquoi michel_d ou gilbert

merci

3 réponses

Avatar
TopJB
Bonjour,

Tu dis que tu appelle avec une ligne du genre :

call chgchamp(("rubrique", "rub_code", "dbText", 5, True)

A moins que ce ne soit une erreur de frappe, tu as une parenthèse
ouvrante de trop.

Après je ne sais pas si c'est une erreur de frappe.

michel_bdx a écrit :
Bonjour

Voila vous m'avez aidé à réaliser ce code et cela marchait jusqu'à maintenant

j'explique:

j'ai une base applicative du style c:applilocalepommepomme_appli.mdb
puis une base de données ou se trouve toutes mes tables du style
c:applilocalepommedatapomme_data.mdb

donc de la base applicative pomme_appli.mdb je veux changer la longueur d'un
champ "rub_code" dans une table qui s'appelle "rubrique" et qui se trouve
dans pomme_data.mdb

voila ce que j'ai écrit grace à vous
Sub Chgchamp(tblName As String, fldName As String, fldType As String,
fldLenght As Long, Ajout As Boolean)
'Modification d'un champ
Dim dft As TableDef
Dim dbs As Database
Dim db As Database
'Set dft = CurrentDb.TableDefs(tblName)
'Creation d'un champ
Set dbs = OpenDatabase("c:applipomme2.mdb")
If dbs.TableDefs(tblName).Fields(fldName).Size < 4 Then
dbs.Execute "ALTER TABLE [" & tblName & "] ADD COLUMN [" & fldName &
"xyz] TEXT(5) not NULL CONSTRAINT [" & fldName & "xyz] UNIQUE;"
dbs.Execute "UPDATE [" & tblName & "] Set [" & fldName & "xyz] = [" &
fldName & "]"
dbs.Execute "DROP INDEX [" & fldName & "] ON [" & tblName & "];"
dbs.Execute "ALTER TABLE [" & tblName & "] DROP COLUMN [" & fldName & "]
;"
Set db = OpenDatabase("c:applipomme2.mdb")
db.TableDefs(tblName).Fields(fldName & "xyz").Required = True 'Null
interdit
db.TableDefs(tblName).Fields(fldName & "xyz").AllowZeroLength = False
db.TableDefs(tblName).Fields(fldName & "xyz").Name = fldName
Else
MsgBox "toto"
End If
dbs.Close
db.Close
End Sub


je declenche cela à partir d'une ligne du style
call chgchamp(("rubrique", "rub_code", "dbText", 5, True)

cela fonctionnait et maintenant cela ne fonctionne plus

sniff pourquoi dites moi pourquoi michel_d ou gilbert

merci




Avatar
michel_bdx
merci pour la remarque c'est une erreur de frappe
michel

"TopJB" a écrit :

Bonjour,

Tu dis que tu appelle avec une ligne du genre :

call chgchamp(("rubrique", "rub_code", "dbText", 5, True)

A moins que ce ne soit une erreur de frappe, tu as une parenthèse
ouvrante de trop.

Après je ne sais pas si c'est une erreur de frappe.

michel_bdx a écrit :
> Bonjour
>
> Voila vous m'avez aidé à réaliser ce code et cela marchait jusqu'à maintenant
>
> j'explique:
>
> j'ai une base applicative du style c:applilocalepommepomme_appli.mdb
> puis une base de données ou se trouve toutes mes tables du style
> c:applilocalepommedatapomme_data.mdb
>
> donc de la base applicative pomme_appli.mdb je veux changer la longueur d'un
> champ "rub_code" dans une table qui s'appelle "rubrique" et qui se trouve
> dans pomme_data.mdb
>
> voila ce que j'ai écrit grace à vous
> Sub Chgchamp(tblName As String, fldName As String, fldType As String,
> fldLenght As Long, Ajout As Boolean)
> 'Modification d'un champ
> Dim dft As TableDef
> Dim dbs As Database
> Dim db As Database
> 'Set dft = CurrentDb.TableDefs(tblName)
> 'Creation d'un champ
> Set dbs = OpenDatabase("c:applipomme2.mdb")
> If dbs.TableDefs(tblName).Fields(fldName).Size < 4 Then
> dbs.Execute "ALTER TABLE [" & tblName & "] ADD COLUMN [" & fldName &
> "xyz] TEXT(5) not NULL CONSTRAINT [" & fldName & "xyz] UNIQUE;"
> dbs.Execute "UPDATE [" & tblName & "] Set [" & fldName & "xyz] = [" &
> fldName & "]"
> dbs.Execute "DROP INDEX [" & fldName & "] ON [" & tblName & "];"
> dbs.Execute "ALTER TABLE [" & tblName & "] DROP COLUMN [" & fldName & "]
> ;"
> Set db = OpenDatabase("c:applipomme2.mdb")
> db.TableDefs(tblName).Fields(fldName & "xyz").Required = True 'Null
> interdit
> db.TableDefs(tblName).Fields(fldName & "xyz").AllowZeroLength = False
> db.TableDefs(tblName).Fields(fldName & "xyz").Name = fldName
> Else
> MsgBox "toto"
> End If
> dbs.Close
> db.Close
> End Sub
>
>
> je declenche cela à partir d'une ligne du style
> call chgchamp(("rubrique", "rub_code", "dbText", 5, True)
>
> cela fonctionnait et maintenant cela ne fonctionne plus
>
> sniff pourquoi dites moi pourquoi michel_d ou gilbert
>
> merci
>
>



Avatar
Michel__D
Bonjour,

Il y a déja à mon avis un problème ici :

dbs.Execute "ALTER TABLE [" & tblName & "] ADD COLUMN [" & fldName & _
"xyz] TEXT(5) not NULL CONSTRAINT [" & fldName & "xyz] UNIQUE;"

L'identification de la contrainte ne doit pas correspondre au libellé d'un champ.

Pour rappel voici ce que je t'avais répondu sur un autre post :

ALTER TABLE LaTable
ALTER COLUMN LeChamp CHAR(255) NOT NULL
CONSTRAINT LeChamp_LaTable UNIQUE;

et donc l'identification de la contrainte [LeChamp_LaTable] qui peut être nommée
autrement est bien différente du libellé du champ [LeChamp].

PS:Et je vois pas la finalité de l'UPDATE qui suit l'ALTER TABLE.


"michel_bdx" a écrit dans le message de
news:
Bonjour

Voila vous m'avez aidé à réaliser ce code et cela marchait jusqu'à maintenant

j'explique:

j'ai une base applicative du style c:applilocalepommepomme_appli.mdb
puis une base de données ou se trouve toutes mes tables du style
c:applilocalepommedatapomme_data.mdb

donc de la base applicative pomme_appli.mdb je veux changer la longueur d'un
champ "rub_code" dans une table qui s'appelle "rubrique" et qui se trouve
dans pomme_data.mdb

voila ce que j'ai écrit grace à vous
Sub Chgchamp(tblName As String, fldName As String, fldType As String,
fldLenght As Long, Ajout As Boolean)
'Modification d'un champ
Dim dft As TableDef
Dim dbs As Database
Dim db As Database
'Set dft = CurrentDb.TableDefs(tblName)
'Creation d'un champ
Set dbs = OpenDatabase("c:applipomme2.mdb")
If dbs.TableDefs(tblName).Fields(fldName).Size < 4 Then
dbs.Execute "ALTER TABLE [" & tblName & "] ADD COLUMN [" & fldName &
"xyz] TEXT(5) not NULL CONSTRAINT [" & fldName & "xyz] UNIQUE;"
dbs.Execute "UPDATE [" & tblName & "] Set [" & fldName & "xyz] = [" &
fldName & "]"
dbs.Execute "DROP INDEX [" & fldName & "] ON [" & tblName & "];"
dbs.Execute "ALTER TABLE [" & tblName & "] DROP COLUMN [" & fldName & "]
;"
Set db = OpenDatabase("c:applipomme2.mdb")
db.TableDefs(tblName).Fields(fldName & "xyz").Required = True 'Null
interdit
db.TableDefs(tblName).Fields(fldName & "xyz").AllowZeroLength = False
db.TableDefs(tblName).Fields(fldName & "xyz").Name = fldName
Else
MsgBox "toto"
End If
dbs.Close
db.Close
End Sub


je declenche cela à partir d'une ligne du style
call chgchamp(("rubrique", "rub_code", "dbText", 5, True)

cela fonctionnait et maintenant cela ne fonctionne plus

sniff pourquoi dites moi pourquoi michel_d ou gilbert

merci