Erro no DataReader

Delphi

05/05/2005

Delphi 2005 / ASP.net / MySQL

Galera estou com um problema neste código e nao sei como resolver, nem imagino onde esta o erro do código, acredito que tenha feito tudo certo, porém esta dando erro na hora de abrir a página.

Isso vai servir para um cadastro de palavras chaves, esta mesma página vai servir para cadastrar em tabelas diferentes
Execute failed. Commands out of sync; You can´t run this command now


Var
ID, Tabela, CampoID, CampoRelac, CampoChave : string;
{ Public Declarations }
end;

implementation

procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs);
Var
SQLCampos : BdpCommand;
DataCampos : BdpDataReader;
begin
ID := Request.QueryString[´id´];
Tabela := Request.QueryString[´tabela´];

{$REGION: ´CAPTURANDO NOME DE CAMPOS´}
SQLCampos := BdpCommand.Create(´SELECT * FROM ´ + Tabela, Connection);
try
Connection.Open();
DataCampos := SQLCampos.ExecuteReader();
CampoID := DataCampos.GetName(0);
CampoRelac := DataCampos.GetName(1);
CampoChave := DataCampos.GetName(2);
finally
Connection.Close();
end;
{$ENDREGION}

MostrarPalavra(); //EXIBE OS DADOS NA DATAGRID

end;

procedure TWebForm1.CVpalavra_ServerValidate(source: System.Object; args: System.Web.UI.WebControls.ServerValidateEventArgs);
Var
sqlvalidar : BdpCommand;
begin
sqlvalidar := BdpCommand.Create(´SELECT 1 FROM ´ + Tabela + ´ WHERE ´ + Tabela + ´_id = ´ + ID + ´ AND ´ + Tabela + ´_CHAVE = ´´ + txtpalavra.Text + ´´´, Connection);
try
Connection.Open();
args.IsValid := sqlvalidar.ExecuteScalar() = nil;
finally
Connection.Close();
end;
end;

procedure TWebForm1.btnconfirma_Click(sender: System.Object; e: System.EventArgs);
Var
sqlinserir : BdpCommand;
begin
if not Self.IsValid then Exit;
sqlinserir := BdpCommand.Create(´INSERT INTO palavra_noticia(´ + CampoRelac + ´, ´ + CampoChave + ´) VALUES (´ + ID + ´, ´ + txtpalavra.Text + ´)´, Connection);
try
Connection.Open();
sqlinserir.ExecuteNonQuery();
finally
Connection.Close();
end;
end;

procedure TWebForm1.MostrarPalavra;
Var
sqlpalavra : BdpDataReader;
commandpalavra : BdpCommand;
begin
commandpalavra := BdpCommand.Create(´SELECT * FROM ´ + Tabela + ´ WHERE ´ + CampoRelac + ´ = ´ + ID, Connection);
try
Connection.Open();
sqlpalavra := commandpalavra.ExecuteReader;
DGPalavra.DataSource := sqlpalavra;
DGPalavra.DataBind();
finally
Connection.Close();
end;
end;


Rzcoimbra

Rzcoimbra

Curtidas 0

Respostas

Rzcoimbra

Rzcoimbra

05/05/2005

qualquer coisa já ajuda


GOSTEI 0
Rjun

Rjun

05/05/2005

Em que linha ocorre o erro ?


GOSTEI 0
Rzcoimbra

Rzcoimbra

05/05/2005

Está dando erro lá embaixo na linha destacada, o erro está logo abaixo

Server Error in ´/WebApplication2´ Application.
--------------------------------------------------------------------------------

Execute failed. Commands out of sync; You can´t run this command now
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: Borland.Data.Common.BdpException: Execute failed. Commands out of sync; You can´t run this command now

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.




Connection.Open();
****sqlpalavra := commandpalavra.ExecuteReader;
DGPalavra.DataSource := sqlpalavra;
DGPalavra.DataBind();


GOSTEI 0
Rjun

Rjun

05/05/2005

Connection.Open(); 
DataCampos := SQLCampos.ExecuteReader();  [1] <--
CampoID := DataCampos.GetName(0); 
CampoRelac := DataCampos.GetName(1); 
CampoChave := DataCampos.GetName(2); 
finally 
Connection.Close(); 
end; 
{$ENDREGION} 

MostrarPalavra(); //EXIBE OS DADOS NA DATAGRID 


Não teria q ter um [b:14fcf0a745]DataCampos.Read[/b:14fcf0a745] depois da linha [1]

Não esqueça que você deve dar um close do datareader para poder abrir outro na mesma conexão.


GOSTEI 0
Rzcoimbra

Rzcoimbra

05/05/2005

brigadao cara...

valeu. era isso mesmo. to iniciando ainda por isso deixo coisas bobas.


GOSTEI 0
POSTAR