Delphi - Problema Dataset

 
Vista:

Problema Dataset

Publicado por Juan Carlos Sanchez (2 intervenciones) el 09/02/2006 00:29:12
Hola a todos, tengo una duda que me esta comiendo, resulta que tengo un dataset que utilizo apenas me conecto a la base de datos llenando un treeview, el problema surge cuando quiero volver a utilizarlo. mando los procedures en el orden que se ejecutan.

al ejecutar el segundo manda errores como que no se puede usar un dataset abierto o que el recordset es EOF o BOF, de antemano Gracias.

procedure TForm1.Conexion_400AfterConnect(Sender: TObject);

var
Nodo1: TTreeNode;
Nodo2: TTreeNode;
CampoName: string;
begin
Screen.Cursor:=crHourGlass;
TreeView1.Items.Clear;
Nodo1 := Treeview1.Items.Add(nil, IpServer);
Nodo1.ImageIndex:=0;
Nodo1.SelectedIndex:=0;
arbol.Close;
CampoName:='SELECT DISTINCT TABLE_SCHEMA FROM QSYS2.SYSTABLES WHERE FILE_TYPE=''D'' ORDER BY TABLE_SCHEMA ASC';
arbol.SQL.Text:=CampoName;
If arbol.Active=True then
arbol.Close;
arbol.Open;
while not arbol.Eof do
begin
Nodo2:= TreeView1.Items.AddChild(Nodo1, arbol.Fields[0].DisplayText);
Nodo2.ImageIndex:=1;
Nodo2.SelectedIndex:=1;
arbol.Next;
end;
actDisconnect.Enabled:=True;
actConnect.Enabled:=False;
Nodo1.Expanded:=True;
Screen.Cursor:=crDefault
end;

procedure TForm1.TreeView1Click(Sender: TObject);
Var
Nodo: TTreeNode;
Nivel: integer;
CampoName: string;

begin
arbol.Close;
Nodo:=TreeView1.Selected;
If Nodo.Level=1 Then
begin
arbol.SQL.Text:='SELECT DISTINCT TABLE_NAME FROM QSYS2.SYSTABLES WHERE FILE_TYPE=''D'' AND TABLE_SCHEMA='''+Nodo.Text+'';
If arbol.Active=True Then
arbol.Close;
arbol.Open;
If arbol.RecordCount>0 then
begin
While not arbol.Eof Do
begin
Nodo2:=TreeView1.Items.Add(Nodo, arbol.fields[0].DisplayText);
Nodo2.ImageIndex:=2;
Nodo2.SelectedIndex:=2;
end
end;
end
end;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema Dataset

Publicado por CESAR (77 intervenciones) el 10/02/2006 08:49:30
Prueba cerrando el la tabla, o query, o la BD y despues la abres antes de cada ejecuciòn de còdigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema Dataset

Publicado por Juan Carlos Sanchez (2 intervenciones) el 10/02/2006 17:11:02
Ya lo hice de hecho modifique el codigo, te pego la nueva version pero todo ocurre cuando el nivel del arbol cambia a 2, no se que pase. este TreeView se llena con las librerias de un AS400 y al seleccionar una libreria me trae las tablas, el problema es alseleccionar la tabla me manda error y quiero llenar otro nivel con los campos de cada tabla., al final pego el query para sacar las librerias, a alguien puede servirle, los otros dos pues estan en el codigo siguiente

procedure TForm1.TreeView1Click(Sender: TObject);
Var
Nodo: TTreeNode;
Nodo2: TTreeNode;
NomPatre: String;
IconInd: Integer;
begin
Screen.Cursor:=crHourGlass;
Nodo:=TreeView1.Selected;
{Str(Nodo.Level,NomPatre);
ShowMessage(NomPatre);}
// ADOQuery2.Close;
If Nodo.HasChildren=True Then
begin
IF Nodo.Expanded=True Then
Nodo.Expanded:=False
Else
Nodo.Expanded:=True;
end
else
try
begin
If ADOQuery2.Active=True Then
ADOQuery2.Close;
If Nodo.Level=1 Then
begin
IconInd:=2;
ADOQuery2.SQL.Text:='SELECT DISTINCT TABLE_NAME FROM QSYS2.SYSTABLES WHERE TABLE_SCHEMA='''+Nodo.Text+'''';
end
else If Nodo.Level=2 Then
begin
IconInd:=3;
ADOQuery2.SQL.Text:='SELECT COLUMN_NAME, DATA_TYPE, LENGTH, NUMERIC_SCALE FROM QSYS2.SYSCOLUMNS WHERE TABLE_SCHEMA='''+NomPatre+''' AND TABLE_NAME='''+Nodo.Text+'''';
end;
ADOQuery2.Open;
While not ADOQuery2.Eof Do
begin
Nodo2:=TreeView1.Items.AddChild(Nodo, ADOQuery2.fields[0].DisplayText);
Nodo2.ImageIndex:=IconInd;
Nodo2.SelectedIndex:=IconInd;
ADOQuery2.Next;
end;
IF Nodo.HasChildren=True Then
Nodo.Expanded:=True;
end;
finally
Screen.Cursor:=crDefault;
end;
end;

query para librerias

CampoName:='SELECT DISTINCT TABLE_SCHEMA FROM QSYS2.SYSTABLES WHERE FILE_TYPE=''D'' ORDER BY TABLE_SCHEMA ASC';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar