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

Récupérer le type d'un champs dans un ActiveX d'une DTS

5 réponses
Avatar
Gafish
Bonjour =E0 tous,

Je suis en train d'=E9crire un ActiveX Vb dans une DTS SQL=20
Server, et j'aimerai r=E9cup=E9rer le type d'un champs.=20
Quelle est la syntaxe ?

Merci beaucoup d'avance !

Arnaud

5 réponses

Avatar
AXL
Essaye ca
DECLARE @table_name nvarchar(200)
set @table_name='Ma_table'

SELECT
COLUMN_NAME = convert(sysname,c.name),
convert (sysname,case
when t.xusertype > 255 then t.name
else d.TYPE_NAME collate database_default
end) TYPE_NAME,
convert(int,case
when d.DATA_TYPE in (6,7) then d.data_precision
else OdbcPrec(c.xtype,c.length,c.xprec)
end) "PRECISION",
convert(int,case
when type_name(d.ss_dtype) IN ('numeric','decimal') then
OdbcPrec(c.xtype,c.length,c.xprec)+2
else
isnull(d.length, c.length)
end) LENGTH,
NULLABLE = convert(smallint, ColumnProperty (c.id, c.name, 'AllowsNull'))

FROM
sysobjects o,
master.dbo.spt_datatype_info d,
systypes t,
syscolumns c
LEFT OUTER JOIN syscomments m on c.cdefault = m.id
AND m.colid = 1
WHERE
o.name like @table_name

AND o.id = c.id
AND t.xtype = d.ss_dtype
AND c.length = isnull(d.fixlen, c.length)
AND (d.ODBCVer is null)
AND (o.type not in ('P', 'FN', 'TF', 'IF') OR (o.type in ('TF', 'IF') and
c.number = 0))
AND isnull(d.AUTO_INCREMENT,0) = isnull(ColumnProperty (c.id, c.name,
'IsIdentity'),0)
AND c.xusertype = t.xusertype

order by c.colorder

C'est la plus simple que j'ai trouvé !!!! lol
Si tu as plus simple merci de la communiquer

"Gafish" a écrit dans le message de
news:19b501c426dc$2ee00370$
Bonjour à tous,

Je suis en train d'écrire un ActiveX Vb dans une DTS SQL
Server, et j'aimerai récupérer le type d'un champs.
Quelle est la syntaxe ?

Merci beaucoup d'avance !

Arnaud
Avatar
Gafish
Bonjour AXL !
Merci beaucoup pour cette longue réponse.
En revanche si je ne m'abuse, ca ressemble à une procédure
stockée non ? Est-ce que je peux en ce cas récupérer le
resultat d'une procédure stockée dans mon code VB à
l'interieur de mon ActiveX ?
Merci encore !

Arnaud

-----Message d'origine-----
Essaye ca
DECLARE @table_name nvarchar(200)
set @table_name='Ma_table'

SELECT
COLUMN_NAME = convert(sysname,c.name),
convert (sysname,case
when t.xusertype > 255 then t.name
else d.TYPE_NAME collate database_default
end) TYPE_NAME,
convert(int,case
when d.DATA_TYPE in (6,7) then d.data_precision
else OdbcPrec(c.xtype,c.length,c.xprec)
end) "PRECISION",
convert(int,case
when type_name(d.ss_dtype) IN ('numeric','decimal')


then
OdbcPrec(c.xtype,c.length,c.xprec)+2
else
isnull(d.length, c.length)
end) LENGTH,
NULLABLE = convert(smallint, ColumnProperty (c.id,


c.name, 'AllowsNull'))

FROM
sysobjects o,
master.dbo.spt_datatype_info d,
systypes t,
syscolumns c
LEFT OUTER JOIN syscomments m on c.cdefault = m.id
AND m.colid = 1
WHERE
o.name like @table_name

AND o.id = c.id
AND t.xtype = d.ss_dtype
AND c.length = isnull(d.fixlen, c.length)
AND (d.ODBCVer is null)
AND (o.type not in ('P', 'FN', 'TF', 'IF') OR (o.type


in ('TF', 'IF') and
c.number = 0))
AND isnull(d.AUTO_INCREMENT,0) = isnull(ColumnProperty


(c.id, c.name,
'IsIdentity'),0)
AND c.xusertype = t.xusertype

order by c.colorder

C'est la plus simple que j'ai trouvé !!!! lol
Si tu as plus simple merci de la communiquer

"Gafish" a écrit


dans le message de
news:19b501c426dc$2ee00370$
Bonjour à tous,

Je suis en train d'écrire un ActiveX Vb dans une DTS SQL
Server, et j'aimerai récupérer le type d'un champs.
Quelle est la syntaxe ?

Merci beaucoup d'avance !

Arnaud


.



Avatar
AXL
Oui tu peux le faire !!!

"Gafish" a écrit dans le message de
news:214d01c4277c$f947d980$
Bonjour AXL !
Merci beaucoup pour cette longue réponse.
En revanche si je ne m'abuse, ca ressemble à une procédure
stockée non ? Est-ce que je peux en ce cas récupérer le
resultat d'une procédure stockée dans mon code VB à
l'interieur de mon ActiveX ?
Merci encore !

Arnaud

-----Message d'origine-----
Essaye ca
DECLARE @table_name nvarchar(200)
set @table_name='Ma_table'

SELECT
COLUMN_NAME = convert(sysname,c.name),
convert (sysname,case
when t.xusertype > 255 then t.name
else d.TYPE_NAME collate database_default
end) TYPE_NAME,
convert(int,case
when d.DATA_TYPE in (6,7) then d.data_precision
else OdbcPrec(c.xtype,c.length,c.xprec)
end) "PRECISION",
convert(int,case
when type_name(d.ss_dtype) IN ('numeric','decimal')


then
OdbcPrec(c.xtype,c.length,c.xprec)+2
else
isnull(d.length, c.length)
end) LENGTH,
NULLABLE = convert(smallint, ColumnProperty (c.id,


c.name, 'AllowsNull'))

FROM
sysobjects o,
master.dbo.spt_datatype_info d,
systypes t,
syscolumns c
LEFT OUTER JOIN syscomments m on c.cdefault = m.id
AND m.colid = 1
WHERE
o.name like @table_name

AND o.id = c.id
AND t.xtype = d.ss_dtype
AND c.length = isnull(d.fixlen, c.length)
AND (d.ODBCVer is null)
AND (o.type not in ('P', 'FN', 'TF', 'IF') OR (o.type


in ('TF', 'IF') and
c.number = 0))
AND isnull(d.AUTO_INCREMENT,0) = isnull(ColumnProperty


(c.id, c.name,
'IsIdentity'),0)
AND c.xusertype = t.xusertype

order by c.colorder

C'est la plus simple que j'ai trouvé !!!! lol
Si tu as plus simple merci de la communiquer

"Gafish" a écrit


dans le message de
news:19b501c426dc$2ee00370$
Bonjour à tous,

Je suis en train d'écrire un ActiveX Vb dans une DTS SQL
Server, et j'aimerai récupérer le type d'un champs.
Quelle est la syntaxe ?

Merci beaucoup d'avance !

Arnaud


.



Avatar
AXL
En fait c'est une procedure stocké system que j'ai adapté a mes besoins

"Gafish" a écrit dans le message de
news:214d01c4277c$f947d980$
Bonjour AXL !
Merci beaucoup pour cette longue réponse.
En revanche si je ne m'abuse, ca ressemble à une procédure
stockée non ? Est-ce que je peux en ce cas récupérer le
resultat d'une procédure stockée dans mon code VB à
l'interieur de mon ActiveX ?
Merci encore !

Arnaud

-----Message d'origine-----
Essaye ca
DECLARE @table_name nvarchar(200)
set @table_name='Ma_table'

SELECT
COLUMN_NAME = convert(sysname,c.name),
convert (sysname,case
when t.xusertype > 255 then t.name
else d.TYPE_NAME collate database_default
end) TYPE_NAME,
convert(int,case
when d.DATA_TYPE in (6,7) then d.data_precision
else OdbcPrec(c.xtype,c.length,c.xprec)
end) "PRECISION",
convert(int,case
when type_name(d.ss_dtype) IN ('numeric','decimal')


then
OdbcPrec(c.xtype,c.length,c.xprec)+2
else
isnull(d.length, c.length)
end) LENGTH,
NULLABLE = convert(smallint, ColumnProperty (c.id,


c.name, 'AllowsNull'))

FROM
sysobjects o,
master.dbo.spt_datatype_info d,
systypes t,
syscolumns c
LEFT OUTER JOIN syscomments m on c.cdefault = m.id
AND m.colid = 1
WHERE
o.name like @table_name

AND o.id = c.id
AND t.xtype = d.ss_dtype
AND c.length = isnull(d.fixlen, c.length)
AND (d.ODBCVer is null)
AND (o.type not in ('P', 'FN', 'TF', 'IF') OR (o.type


in ('TF', 'IF') and
c.number = 0))
AND isnull(d.AUTO_INCREMENT,0) = isnull(ColumnProperty


(c.id, c.name,
'IsIdentity'),0)
AND c.xusertype = t.xusertype

order by c.colorder

C'est la plus simple que j'ai trouvé !!!! lol
Si tu as plus simple merci de la communiquer

"Gafish" a écrit


dans le message de
news:19b501c426dc$2ee00370$
Bonjour à tous,

Je suis en train d'écrire un ActiveX Vb dans une DTS SQL
Server, et j'aimerai récupérer le type d'un champs.
Quelle est la syntaxe ?

Merci beaucoup d'avance !

Arnaud


.



Avatar
Gafish
Ok, je vais regarder la syntaxe à utiliser.
Merci encore

Arnaud

"AXL" a écrit dans le message de
news:
Oui tu peux le faire !!!

"Gafish" a écrit dans le message de
news:214d01c4277c$f947d980$
Bonjour AXL !
Merci beaucoup pour cette longue réponse.
En revanche si je ne m'abuse, ca ressemble à une procédure
stockée non ? Est-ce que je peux en ce cas récupérer le
resultat d'une procédure stockée dans mon code VB à
l'interieur de mon ActiveX ?
Merci encore !

Arnaud

>-----Message d'origine-----
>Essaye ca
>DECLARE @table_name nvarchar(200)
>set @table_name='Ma_table'
>
>SELECT
> COLUMN_NAME = convert(sysname,c.name),
> convert (sysname,case
> when t.xusertype > 255 then t.name
> else d.TYPE_NAME collate database_default
> end) TYPE_NAME,
> convert(int,case
> when d.DATA_TYPE in (6,7) then d.data_precision
> else OdbcPrec(c.xtype,c.length,c.xprec)
> end) "PRECISION",
> convert(int,case
> when type_name(d.ss_dtype) IN ('numeric','decimal')
then
> OdbcPrec(c.xtype,c.length,c.xprec)+2
> else
> isnull(d.length, c.length)
> end) LENGTH,
> NULLABLE = convert(smallint, ColumnProperty (c.id,
c.name, 'AllowsNull'))
>
> FROM
> sysobjects o,
> master.dbo.spt_datatype_info d,
> systypes t,
> syscolumns c
> LEFT OUTER JOIN syscomments m on c.cdefault = m.id
> AND m.colid = 1
> WHERE
> o.name like @table_name
>
> AND o.id = c.id
> AND t.xtype = d.ss_dtype
> AND c.length = isnull(d.fixlen, c.length)
> AND (d.ODBCVer is null)
> AND (o.type not in ('P', 'FN', 'TF', 'IF') OR (o.type
in ('TF', 'IF') and
>c.number = 0))
> AND isnull(d.AUTO_INCREMENT,0) = isnull(ColumnProperty
(c.id, c.name,
>'IsIdentity'),0)
> AND c.xusertype = t.xusertype
>
> order by c.colorder
>
>C'est la plus simple que j'ai trouvé !!!! lol
>Si tu as plus simple merci de la communiquer
>
>"Gafish" a écrit
dans le message de
>news:19b501c426dc$2ee00370$
>Bonjour à tous,
>
>Je suis en train d'écrire un ActiveX Vb dans une DTS SQL
>Server, et j'aimerai récupérer le type d'un champs.
>Quelle est la syntaxe ?
>
>Merci beaucoup d'avance !
>
>Arnaud
>
>
>.
>