Fórum trying to modify read-only field, pq ? #322673
01/06/2006
0
Oi pessoal antes de trocar o driver de acesso firebird com dbexpress de Interbase para UIB FireBird15 funcionava, eu tenho uma consulta que utiliza os componentes TSQLQuery, DataSetProvider, ClientDataset, Datasource, eu permito que somente uma coluna do grid seja modificada pela usuario, e detalhe esta coluna nem pertence a nenhuma tabela pois eu faço um select como podem ver abaixo unindo varias tabelas:
Alguma sugestão, os fields estão readonly = false, a opção do grid dgEditing = true, o que poderá ser ?
César
DS.Enabled := False; with Q do begin Sql.Clear; //Vendas de Produtos Sql.Add(´SELECT ´´P´´ TIPO,´); Sql.Add(´ A.NOTNUM,´); Sql.Add(´ A.NOTSEQ,´); Sql.Add(´ B.ITENUM AS ITECOD,´); Sql.Add(´ A.NOTEMI,´); Sql.Add(´ B.ITEDES AS DES,´); Sql.Add(´ B.ITETOT AS TOT,´); Sql.Add(´ D.CLIRAZ,´); Sql.Add(´ D.CLICID,´); Sql.Add(´ A.CFOCOD,´); Sql.Add(´ (COALESCE((CASE(COALESCE((SELECT X.ITEPER´); Sql.Add(´ FROM COMISSAO X´); Sql.Add(´ WHERE X.NOTNUM = A.NOTNUM´); Sql.Add(´ AND X.NOTSEQ = A.NOTSEQ´); Sql.Add(´ AND X.ITETIP = ´´P´´´); Sql.Add(´ AND X.ITECOD = B.ITENUM),0))´); Sql.Add(´ WHEN 0 THEN (SELECT W.PROCOM FROM PRODUTOS W WHERE B.PROCOD = W.PROCOD)´); Sql.Add(´ ELSE´); Sql.Add(´ (COALESCE((SELECT X.ITEPER´); Sql.Add(´ FROM COMISSAO X´); Sql.Add(´ WHERE X.NOTNUM = A.NOTNUM´); Sql.Add(´ AND X.NOTSEQ = A.NOTSEQ´); Sql.Add(´ AND X.ITETIP = ´´P´´´); Sql.Add(´ AND X.ITECOD = B.ITENUM),0))´); Sql.Add(´ END),0)) ITEPER´); Sql.Add(´ FROM NOTA A INNER JOIN NOTITE B ON A.NOTNUM = B.NOTNUM AND A.NOTSEQ = B.NOTSEQ´); Sql.Add(´ INNER JOIN CLIENTES D ON D.CLICOD = A.CLICOD´); Sql.Add(´ WHERE A.VENCOD = :P1´); Sql.Add(´ AND NOTSTA <> ´´Cancelada´´´); Sql.Add(´ AND A.CFOCOD IN (SELECT W.CFOCOD FROM CFOP W WHERE W.CFOCOM = ´´S´´)´); Parambyname(´P1´).asInteger := ECod.asInteger; if (EIni.text <> ´ / / ´) then begin Sql.Add(´AND A.NOTEMI >= :P2´); Parambyname(´P2´).asDate := StrToDate(EIni.text); end; if (EFim.text <> ´ / / ´) then begin Sql.Add(´AND A.NOTEMI <= :P3´); Parambyname(´P3´).asDate := StrToDate(EFim.text); end; //Itens informados manualmente na tabela de comissao if (EIni.text <> ´ / / ´) and (EFim.text <> ´ / / ´) then begin Sql.Add(´UNION´); Sql.Add(´SELECT ´´D´´ TIPO,´); Sql.Add(´ NOTNUM,´); Sql.Add(´ NOTSEQ,´); Sql.Add(´ ITECOD,´); Sql.Add(´ ITEDIN AS NOTEMI,´); Sql.Add(´ ITEDES AS DES,´); Sql.Add(´ CAST(0 AS DOUBLE PRECISION) AS TOT,´); Sql.Add(´ CLIRAZ,´); Sql.Add(´ CAST(´´ ´´ AS VARCHAR(30)) AS CLICID,´); Sql.Add(´ CAST(´´ ´´ AS VARCHAR(10)) AS CFOCOD,´); Sql.Add(´ ITEPER´); Sql.Add(´ FROM COMISSAO´); Sql.Add(´ WHERE VENCOD = :P1´); Parambyname(´P1´).asInteger := ECod.asInteger; if (EIni.text <> ´ / / ´) then begin Sql.Add(´AND ITEDIN >= :P4´); Parambyname(´P4´).asDate := StrToDate(EIni.text); end; if (EFim.text <> ´ / / ´) then begin Sql.Add(´AND ITEFIN <= :P5´); Parambyname(´P5´).asDate := StrToDate(EFim.text); end; end; //Vendas de Serviços Sql.Add(´UNION´); Sql.Add(´SELECT ´´S´´ TIPO,´); Sql.Add(´ A.NOTNUM,´); Sql.Add(´ A.NOTSEQ,´); Sql.Add(´ C.SERITE AS ITECOD,´); Sql.Add(´ A.NOTEMI,´); Sql.Add(´ C.SERDES AS DES,´); Sql.Add(´ C.SERTOT AS TOT,´); Sql.Add(´ D.CLIRAZ,´); Sql.Add(´ D.CLICID,´); Sql.Add(´ A.CFOCOD,´); Sql.Add(´ COALESCE((SELECT X.ITEPER´); Sql.Add(´ FROM COMISSAO X´); Sql.Add(´ WHERE X.NOTNUM = A.NOTNUM´); Sql.Add(´ AND X.NOTSEQ = A.NOTSEQ´); Sql.Add(´ AND X.ITETIP = ´´S´´´); Sql.Add(´ AND X.ITECOD = C.SERITE),0) AS ITEPER´); Sql.Add(´ FROM NOTA A INNER JOIN NOTSER C ON C.NOTNUM = A.NOTNUM´); Sql.Add(´ INNER JOIN CLIENTES D ON D.CLICOD = A.CLICOD´); Sql.Add(´ WHERE A.VENCOD = :P1´); Sql.Add(´ AND NOTSTA <> ´´Cancelada´´´); Sql.Add(´ AND A.CFOCOD IN (SELECT W.CFOCOD FROM CFOP W WHERE W.CFOCOM = ´´S´´)´); Parambyname(´P1´).asInteger := ECod.asInteger; if (EIni.text <> ´ / / ´) then begin Sql.Add(´AND A.NOTEMI >= :P4´); Parambyname(´P4´).asDate := StrToDate(EIni.text); end; if (EFim.text <> ´ / / ´) then begin Sql.Add(´AND A.NOTEMI <= :P5´); Parambyname(´P5´).asDate := StrToDate(EFim.text); end; Sql.Add(´ ORDER BY 2´); end; try Screen.cursor := crSqlWait; CQ.Close; CQ.Open; finally Screen.cursor := crDefault; end; DS.Enabled := True; Grid.Setfocus;
Alguma sugestão, os fields estão readonly = false, a opção do grid dgEditing = true, o que poderá ser ?
César
Cesarpir
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)