>In pratica il palmare utilizza questa vista per popolare il suo
>DB interno SDF, esegue la vista e poi una operazione di indicizzazione
>dei dati ottenuti;
Se la vista non è materializzata non contiene alcun dato ma accede direttamente alla data pages della tabella sottostante, quindi non capisco cosa intendi con "indicizzazione dei dati ottenuti".
>Probabilmente utilizzerà la vista per creare una tabella interna
>ereditando le proprietà dei campi e poi tentando di creare l'indice
>primario ritorna questo errore. Onestamente non so come questo
>programma vb lavori, io vedo soltanto i messaggi a video che
>mi danno la sequanze delle varie fasi in corso (prima esecuzione
>della vista poi indicizzazione).
>So soltanto che se il campo ANCODICE è NOT NULL funziona, se
>è NULL ritorna un errore.
Non ho mai utilizzato SQL CE ma se supporta le user-defined function potresti definirne una come nel seguente esempio:
USE tempdb;
CREATE TABLE dbo.foo(
c1 int NOT NULL
);
GO
CREATE VIEW dbo.v_foo
AS
SELECT c1
FROM dbo.foo;
GO
CREATE VIEW dbo.v_foo_cast
AS
SELECT CONVERT(char(6), c1) AS c1_string
FROM dbo.foo;
GO
CREATE FUNCTION dbo.udf_foo_cast()
RETURNS @t TABLE(
c1_string char(6) NOT NULL
)
AS
BEGIN
INSERT @t
SELECT CONVERT(char(6), c1)
FROM dbo.foo
RETURN
END;
GO
SELECT OBJECT_NAME(object_id) AS object, name, is_nullable
FROM sys.columns
WHERE object_id IN(
OBJECT_ID('dbo.foo')
, OBJECT_ID('dbo.v_foo')
, OBJECT_ID('dbo.v_foo_cast')
, OBJECT_ID('dbo.udf_foo_cast')
);
/* Output:
object name is_nullable
------------ ----------- -----------
foo c1 0
v_foo c1 0
v_foo_cast c1_string 1
udf_foo_cast c1_string 0
(4 row(s) affected)
*/
DROP VIEW dbo.v_foo, dbo.v_foo_cast;
DROP FUNCTION dbo.udf_foo_cast;
DROP TABLE dbo.foo;
>Ciao e te e mille grazie ovviamente.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org