Substring From For
Se alguém puder me ajudar com este problema.
Estou usando o Delphi 7 + trio(SqlQuery, DataSetProvider, ClientDataSet) e quando dou um Applyupdate(0) na tabela retorna o um erro dizendo que o FOR da sql não é reconhecido. A sql que estou utilizando é a seguinte:
SELECT
n.CD_NOTA,
n.NR_NOTA,
n.IT_ANO,
n.NR_NOTA||'/' ||SUBSTRING(CAST(p.IT_ANO AS VARCHAR(4)) FROM 3 FOR 2) ID_NOTA,
n.DT_EMISSAO,
n.DT_CONFIRMA,
n.DT_PREVISAO,
n.CD_CLIENTE
FROM
MV_NOTA n
WHERE
AND (n.CD_NOTA =:CD_NOTA)
Obs: o DataSetProvider esta no UpdateMode como WhereKeyOnly, e evidentemente somente o campo
CD_NOTA esta habilitado como pfInKey = True, o campo ID_NOTA (onde parece estar o problema) esta com os ProvidersFlags False para todas as opções, esta assim tanto no SQLQuery como no ClientDataSet.
Estou usando o Delphi 7 + trio(SqlQuery, DataSetProvider, ClientDataSet) e quando dou um Applyupdate(0) na tabela retorna o um erro dizendo que o FOR da sql não é reconhecido. A sql que estou utilizando é a seguinte:
SELECT
n.CD_NOTA,
n.NR_NOTA,
n.IT_ANO,
n.NR_NOTA||'/' ||SUBSTRING(CAST(p.IT_ANO AS VARCHAR(4)) FROM 3 FOR 2) ID_NOTA,
n.DT_EMISSAO,
n.DT_CONFIRMA,
n.DT_PREVISAO,
n.CD_CLIENTE
FROM
MV_NOTA n
WHERE
AND (n.CD_NOTA =:CD_NOTA)
Obs: o DataSetProvider esta no UpdateMode como WhereKeyOnly, e evidentemente somente o campo
CD_NOTA esta habilitado como pfInKey = True, o campo ID_NOTA (onde parece estar o problema) esta com os ProvidersFlags False para todas as opções, esta assim tanto no SQLQuery como no ClientDataSet.
Adriano Barbosa
Curtidas 0
Respostas
Emerson Nascimento
10/05/2010
me parece que o campo ID_NOTA é um campo virtual.
se for, deixe no seu ProviderFlags somente a opção pfHidden como True, assim o campo será ignorado na alterações.
se for, deixe no seu ProviderFlags somente a opção pfHidden como True, assim o campo será ignorado na alterações.
GOSTEI 0
Adriano Barbosa
10/05/2010
Não funcionou. Apresentou os seguintes erros:
e
Detalhe: mudei apenas o ProviderFlags para pfHidden no ClientDataSet visto que se mudar no SqlQuery não consigo ver o campo no ClientDataSet.
e
Detalhe: mudei apenas o ProviderFlags para pfHidden no ClientDataSet visto que se mudar no SqlQuery não consigo ver o campo no ClientDataSet.
GOSTEI 0
Wilson Junior
10/05/2010
Para o campo ID_Nota, deixe todos os ProviderFlags como False e a propriedade Required como False, pois ID_Nota é um campo virtual.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Adriano Barbosa
10/05/2010
Fiz o seguinte, visto que este campo é só para exibição:
function TFr_MeuForm.GetNrNota: String;begin Result := IntToStr(cds_notaNR_NOTA.AsInteger) + '/' + Copy(IntToStr(cds_notaIT_ANO_.AsInteger),3,2);end;
procedure TFr_MeuForm.cds_notaNR_NOTAGetText(Sender: TField; var Text: String; DisplayText: Boolean);begin inherited; Text := GetNrNota;end;
Valeu... T+
function TFr_MeuForm.GetNrNota: String;begin Result := IntToStr(cds_notaNR_NOTA.AsInteger) + '/' + Copy(IntToStr(cds_notaIT_ANO_.AsInteger),3,2);end;
procedure TFr_MeuForm.cds_notaNR_NOTAGetText(Sender: TField; var Text: String; DisplayText: Boolean);begin inherited; Text := GetNrNota;end;
Valeu... T+
GOSTEI 0