Discussion:
Mettre dans une vue, une colonne de type Blob sans référence a un champ d'une table
(trop ancien pour répondre)
Gilles LAJOT-SARTHOU
2010-05-25 13:30:31 UTC
Permalink
Bonjour

Tout est dit dans le titre..

un truc du genre CHR(0) as MonBlob dans la requête SQL de la vue, suivit
d'un dbsetprop('mavue.monblob',"Field", "DataType","W") crée bien un champ
blob mais la taille de celui-ci est de 1 caractère...
pour le moment j'utilise une référence a un champ mémo d'une table pour
créer ma colonne blob, ce qui m'oblige après avoir chargé la vue, a effacer
dans tous les enregistrements le contenu du champ blob..

ce n'est pas élégant, ni pratique..

Cordialement
GLS
membre AtoutFox
Jean à Grenoble
2010-05-25 13:45:20 UTC
Permalink
as-tu essayé CAST("" AS Blob) AS monchampblob ?

Je vais regarder si c'est bien blob qu'il faut mettre comme type ...

A+
Jean
Jean à Grenoble
2010-05-25 13:49:32 UTC
Permalink
D'après l'aide, on peut mettre 'blob' ou 'W' ...

A+

Jean à Grenoble
Gilles LAJOT-SARTHOU
2010-05-25 14:05:29 UTC
Permalink
Merci Jean

Le "cast" transforme bien la variable caractère vide en un vrai champ blob,
ce que ne fait pas un simple caractère vide space(1) as monblob suivi d'un
dbsetprop ..

Mon problème est donc résolu..

Amicalement
GLS
Membre AtoutFox
Post by Jean à Grenoble
D'après l'aide, on peut mettre 'blob' ou 'W' ...
A+
Jean à Grenoble
Gregory Adam
2010-05-25 14:03:19 UTC
Permalink
Gilles,

Comme ceci, tu peux mettre des trucs dans memoField ou blobField de la vue

Il n'y aura pas de tentatie de maj de ces champs puisque 'Updatable' = false

create sql view ('LaVue') as ;
select emp_id, ;
emp_name, ;
cast ( '' as M ) as memoField, ;
cast ( '' as W ) as blobField ;
from LaTable

=dbsetprop('LaVue' + '.emp_id', 'Field', 'Updatable', FALSE)

=dbsetprop('LaVue' + '.emp_name', 'Field', 'Updatable', true)
=dbsetprop('LaVue' + '.memoField', 'Field', 'Updatable', false)
=dbsetprop('LaVue' + '.blobField', 'Field', 'Updatable', false)

=dbsetprop('LaVue' +'.emp_id', 'FIELD', 'KeyField', true)

=dbsetprop('LaVue', 'VIEW', 'SendUpdates', true)

...
--
Gregory
_
Post by Gilles LAJOT-SARTHOU
Bonjour
Tout est dit dans le titre..
un truc du genre CHR(0) as MonBlob dans la requête SQL de la vue, suivit
d'un dbsetprop('mavue.monblob',"Field", "DataType","W") crée bien un champ
blob mais la taille de celui-ci est de 1 caractère...
pour le moment j'utilise une référence a un champ mémo d'une table pour
créer ma colonne blob, ce qui m'oblige après avoir chargé la vue, a
effacer dans tous les enregistrements le contenu du champ blob..
ce n'est pas élégant, ni pratique..
Cordialement
GLS
membre AtoutFox
Gilles LAJOT-SARTHOU
2010-05-25 15:03:59 UTC
Permalink
Merci Gregory,

mon erreur fut de ne pas utiliser CAST dès le départ mais un simple CHR(0)
as MonChampBlob puis un
dbsetprop(maveu.MonchampBlob,"Fields","DataType","W") qui ne transformait
pas le champ en blob mais le laissai en c(1)..
Le CAST permet cette transformation directement..

Amicalement
GLS
Membre AtoutFox
Post by Gregory Adam
Gilles,
Comme ceci, tu peux mettre des trucs dans memoField ou blobField de la vue
Il n'y aura pas de tentatie de maj de ces champs puisque 'Updatable' = false
create sql view ('LaVue') as ;
select emp_id, ;
emp_name, ;
cast ( '' as M ) as memoField, ;
cast ( '' as W ) as blobField ;
from LaTable
=dbsetprop('LaVue' + '.emp_id', 'Field', 'Updatable', FALSE)
=dbsetprop('LaVue' + '.emp_name', 'Field', 'Updatable', true)
=dbsetprop('LaVue' + '.memoField', 'Field', 'Updatable', false)
=dbsetprop('LaVue' + '.blobField', 'Field', 'Updatable', false)
=dbsetprop('LaVue' +'.emp_id', 'FIELD', 'KeyField', true)
=dbsetprop('LaVue', 'VIEW', 'SendUpdates', true)
...
--
Gregory
_
Post by Gilles LAJOT-SARTHOU
Bonjour
Tout est dit dans le titre..
un truc du genre CHR(0) as MonBlob dans la requête SQL de la vue, suivit
d'un dbsetprop('mavue.monblob',"Field", "DataType","W") crée bien un
champ blob mais la taille de celui-ci est de 1 caractère...
pour le moment j'utilise une référence a un champ mémo d'une table pour
créer ma colonne blob, ce qui m'oblige après avoir chargé la vue, a
effacer dans tous les enregistrements le contenu du champ blob..
ce n'est pas élégant, ni pratique..
Cordialement
GLS
membre AtoutFox
Loading...