Fórum Campos Blobs #345886
12/09/2007
0
Estou desenvolvendo um pequeno sistema de dicas em Firebird/dbExpress onde consta de 2 tabelas (Master/Detail) descritas abaixo:
Tabela: EQUIP
NOMETIPONÃO NULO
COD_EQUIPINTEGERNOT NULL
DESCRICAOVARCHAR(50)
Tabela: DETEQUIP
NOMETIPONÃO NULO
COD_DETEQUIPINTEGERNOT NULL
COD_EQUIPINTEGER
MARCAVARCHAR(20)
MODELOVARCHAR(25)
SINTOMAVARCHAR(255)
SOLUCAOBLOB SUB_TYPE 1 SEGMENT SIZE 4096
OBSERVAÇÃOBLOB SUB_TYPE 1 SEGMENT SIZE 4096
FONTEVARCHAR(50)
ESQUEMAVARCHAR(255)
DBExpress
qryEQUIP = TSQLDataset
qryEQUIP.CommandText:= SELECT * FROM EQUIP WHERE COD_EQUIP= :COD_EQUIP
dspEQUIP = TDataSetprovider
dspEQUIP.DataSet:= qryEQUIP
dspEQUIP.Options:= [poFetchBlobsOnDemand]
dspEQUIP.UpdateMode:= upWhereKeyOnly
qryDETEQUIP = TSQLDataSet
qryDETEQUIP.CommandText:= SELECT * FROM DETEQUIP WHERE COD_EQUIP = :COD_EQUIP
qryDETEQUIP.DataSource:=dsEQUIP
dsEQUIP = TDataSource
dsEQUIP.DataSet:=qryEQUIP
Na tela de Cadastro possuo um botão para consultar a dicas, com o seguinte código:
if fmProcurarDicas.ShowModal=mrOk then
begin
cdsEQUIP.Open;
cdsDETEQUIP.Locate(´COD_EQUIP;COD_DETEQUIP´,
VarArrayOf([dsEQUIP.DataSet.FieldByName(´COD_EQUIP´).AsString,
sdtProcurarDICASCOD_DETEQUIP.AsString]),[]);
end;
O problema é que a consulta está demorando muito para trazer a cache, devido aos campos BLOBs. Habilitei a opção “poFetchBlobsOnDemand” do DataSetProvider e a consulta se tornou mais rápida, mas não consigo exibir esses campos em um controle DataWare (DBMemo)
Tabela: EQUIP
NOMETIPONÃO NULO
COD_EQUIPINTEGERNOT NULL
DESCRICAOVARCHAR(50)
Tabela: DETEQUIP
NOMETIPONÃO NULO
COD_DETEQUIPINTEGERNOT NULL
COD_EQUIPINTEGER
MARCAVARCHAR(20)
MODELOVARCHAR(25)
SINTOMAVARCHAR(255)
SOLUCAOBLOB SUB_TYPE 1 SEGMENT SIZE 4096
OBSERVAÇÃOBLOB SUB_TYPE 1 SEGMENT SIZE 4096
FONTEVARCHAR(50)
ESQUEMAVARCHAR(255)
DBExpress
qryEQUIP = TSQLDataset
qryEQUIP.CommandText:= SELECT * FROM EQUIP WHERE COD_EQUIP= :COD_EQUIP
dspEQUIP = TDataSetprovider
dspEQUIP.DataSet:= qryEQUIP
dspEQUIP.Options:= [poFetchBlobsOnDemand]
dspEQUIP.UpdateMode:= upWhereKeyOnly
qryDETEQUIP = TSQLDataSet
qryDETEQUIP.CommandText:= SELECT * FROM DETEQUIP WHERE COD_EQUIP = :COD_EQUIP
qryDETEQUIP.DataSource:=dsEQUIP
dsEQUIP = TDataSource
dsEQUIP.DataSet:=qryEQUIP
Na tela de Cadastro possuo um botão para consultar a dicas, com o seguinte código:
if fmProcurarDicas.ShowModal=mrOk then
begin
cdsEQUIP.Open;
cdsDETEQUIP.Locate(´COD_EQUIP;COD_DETEQUIP´,
VarArrayOf([dsEQUIP.DataSet.FieldByName(´COD_EQUIP´).AsString,
sdtProcurarDICASCOD_DETEQUIP.AsString]),[]);
end;
O problema é que a consulta está demorando muito para trazer a cache, devido aos campos BLOBs. Habilitei a opção “poFetchBlobsOnDemand” do DataSetProvider e a consulta se tornou mais rápida, mas não consigo exibir esses campos em um controle DataWare (DBMemo)
Mauvin
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)