SqlCommand, SqlDataReader
24/06/2005
0
Function CarregaDados(pSelect:String; pFiltro:Integer):SqlDataReader
var conn:SqlConnection; SqlCmd:SqlCommand; pFiltroparam:SqlParameter;
begin
conn := SqlConnection.Create(´string de conexao´);
Sqlcmd := SqlCommand.Create(pSelect,conn);
pFiltroparam := SqlParameter.Create(´@pFiltro´, SqlDbType.Int, 4);
pFiltroparam.Value := TObject(pFiltro);
SqlCmd.Parameters.Add(pFiltroparam);
conn.Open;
result := SqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
end;
No evento do botao faço a chamada a funcao:
procedure botao evento click
var vConsulta:SqlDataReader;
begin
try
DataGrid1.DataSource := CarregaDados(´Select * from Tabela where campo = @pFiltro´,Convert.ToInt32(txtCodigo.text));
DataGrid1.Databind();
finally
end;
end;
E não aparece nada no datagrid... porque :?: :?: :?:
Mas quando faço a mesma operação no DropdownList já funciona...:shock:
Desde já obrigado.
Luiz Fernando
Ze Lele
Posts
25/06/2005
Cristiam
procedure botao evento click var vConsulta:SqlDataReader; ds: DataSet; begin try ds := Dataset.Create(´DataSet1´); vConsulta := CarregaDados(´Select * from Tabela where campo = @pFiltro´,Convert.ToInt32(txtCodigo.text)); vConsulta.Fill(ds); DataGrid1.DataSource := ds.tables[0]; DataGrid1.Databind(); finally end; end;
Acredito q dessa forma irá funcionar. ;)
26/06/2005
Sanses
vConsulta := CarregaDados(´Select * from Tabela where campo = @pFiltro´,Convert.ToInt32(txtCodigo.text));
datagrid1.datasouce := vConsulta;
while vConsulta.Read do
begin
datagrid1.databind;
end;
[]´s
Sanses
27/06/2005
Ze Lele
Resolvi assim, mudando o retorno da função, mas a sua solução do while eh muito boa, quanto a solução do fill eu tive problemas com o bdp nos campos Numeric aonde o conteúdo era <null> por isso a mudança para o ado.net.
A mensagem de erro que ocorre quando tento abastecer um dataset com um retorno numeric null é Input string.... não me lembro de toda a mensagem, mas com o datareader do ado.net resolveu pode retornar qq coisa.
Estou meio de pe atras com este fill ai nesta função mas assim não retornou erro ´por enquanto´.
Valew.
Function CarregaDados(pSelect:String; pFiltro:Integer):DataTable;
var conn:SqlConnection; Adapter:SqlDataAdapter; pFiltroparam:SqlParameter;
begin
conn := SqlConnection.Create(´string de conexao´);
pFiltroparam := SqlParameter.Create(´@pFiltro´, SqlDbType.Int, 4);
Adapter := SqlDataAdapter.Create(pSelect, conn);
Adapter.SelectCommand.Parameters.Add(pFiltroparam).Value := TObject(pFiltro);
Adapter.SelectCommand.CommandType:=CommandType.Text;
Result := DataTable.Create;
Adapter.Fill(Result);
end;
Clique aqui para fazer login e interagir na Comunidade :)