Substring From For

Delphi

10/05/2010

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.
Adriano Barbosa

Adriano Barbosa

Curtidas 0

Respostas

Emerson Nascimento

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.
GOSTEI 0
Adriano Barbosa

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.
GOSTEI 0
Wilson Junior

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.
GOSTEI 0
Adriano Barbosa

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+
 
GOSTEI 0
POSTAR