Carregar combobox com ClientDataSet
Pessoal, bom dia.
To usando MySql com ClientDataSet. Acontece o seguinte: Ao abrir o form de Cadastro e tentar carregar a combobox ou mesmo dar enter para mudar de campo, ta dando:
Dataset not in edit or insert mode. Não quero inserir ou editar, por enquanto, apenas preencher a combobox. Preencho com esse código:
Não sei mais o que fazer pra tirar esse erro.
To usando MySql com ClientDataSet. Acontece o seguinte: Ao abrir o form de Cadastro e tentar carregar a combobox ou mesmo dar enter para mudar de campo, ta dando:
Dataset not in edit or insert mode. Não quero inserir ou editar, por enquanto, apenas preencher a combobox. Preencho com esse código:
procedure TfrmClientes.CarregarCombo;
var
tempCliente: TCliente; // Aqui estou declarando um obj do tipo da classe
begin
DM.cdsClientes.Close;
cmbClientes.Items.Clear;
DM.cdsClientes.Open;
DM.cdsClientes.First;
while not DM.cdsClientes.Eof do
begin
// neste momento vou instanciar um obj para cada item do combo
tempCliente := TCliente.Create;
tempCliente.Codigo := DM.cdsClientes.fieldbyname('CLI_CODIGO').AsString;
tempCliente.Nome := DM.cdsClientes.fieldbyname('CLI_NOME').AsString;
//desta forma em cada item do cmb você terá um objeto associada na lista
cmbClientes.Items.AddObject(tempCliente.Nome, tempCliente);
DM.cdsClientes.Next;
end;
end;
Não sei mais o que fazer pra tirar esse erro.
Frederico Brigatte***
Curtidas 0
Melhor post
Frederico Brigatte***
15/10/2012
Ta dando agora Inaccessible value
procedure TfrmClientes.btnAdicionarClick(Sender: TObject);
begin
DM.cdsClientes.Open; -> Nessa linha
DM.cdsClientes.append;
dbData_Cad.Text := DateToStr(Date);
// dbNome.SetFocus;
end;
E diz que o campo tem que ter valor. Não sei mais o que fazer.
procedure TfrmClientes.btnAdicionarClick(Sender: TObject);
begin
DM.cdsClientes.Open; -> Nessa linha
DM.cdsClientes.append;
dbData_Cad.Text := DateToStr(Date);
// dbNome.SetFocus;
end;
E diz que o campo tem que ter valor. Não sei mais o que fazer.
GOSTEI 1
Mais Respostas
Gilmar Moraes
15/10/2012
Tenta assim ...
Var
I:Integer;
begin
for I := 0 to datasouce1.DataSet.FieldCount - 1 do
Begin
if datasouce1.DataSet.Fields[I].DataType in [ftstring, ftwidestring, ftfixedchar] then
Combobox1.Items.Add(datasouce1.DataSet.Fields[I].FieldName)
end;
lembrando que o ftstring, o ftwwidestring etc, são os tipos de campos de tabela que vão aparecer no combobox..
Var
I:Integer;
begin
for I := 0 to datasouce1.DataSet.FieldCount - 1 do
Begin
if datasouce1.DataSet.Fields[I].DataType in [ftstring, ftwidestring, ftfixedchar] then
Combobox1.Items.Add(datasouce1.DataSet.Fields[I].FieldName)
end;
lembrando que o ftstring, o ftwwidestring etc, são os tipos de campos de tabela que vão aparecer no combobox..
GOSTEI 0
Gilmar Moraes
15/10/2012
Ta dando agora Inaccessible value
procedure TfrmClientes.btnAdicionarClick(Sender: TObject);
begin
DM.cdsClientes.Open; -> Nessa linha
DM.cdsClientes.append;
dbData_Cad.Text := DateToStr(Date);
// dbNome.SetFocus;
end;
E diz que o campo tem que ter valor. Não sei mais o que fazer.
procedure TfrmClientes.btnAdicionarClick(Sender: TObject);
begin
DM.cdsClientes.Open; -> Nessa linha
DM.cdsClientes.append;
dbData_Cad.Text := DateToStr(Date);
// dbNome.SetFocus;
end;
E diz que o campo tem que ter valor. Não sei mais o que fazer.
Bom..explia melhor o que vc está querendo..
eu entendi que vc queria um combobox com os campos de tabela dentro, é isso ? ou estou enganado ?
GOSTEI 0
Frederico Brigatte***
15/10/2012
Sim, mas ja resolvi o problema, obrigado
GOSTEI 0
Alisson Santos
15/10/2012
O tópico está sendo fechado, qualquer duvida nos informar.
GOSTEI 0