Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duda con DBnavigator y bases de datos. (https://www.clubdelphi.com/foros/showthread.php?t=86678)

principiodual 15-09-2014 20:32:55

Duda con DBnavigator y bases de datos.
 
Buenas tardes a todos, tengo una pequeña duda que ojala me pudieran orientar, de ante mano muchas gracias, sobretodo por la gran ayuda de mi problema anterior, he aprendido mucho en el poco tiempo que llevo en esta comunidad.

Mi problema es el siguiente, conecto un dbnavigator a un dbgrid, para trabajar el agregar, modificar y eliminar y todo bien, mientras la tabla con la que conecto el dbgrid tenga o traiga datos, pero si por ejemplo le aplico un Delete a la tabla y la limpio toda, al ir al aplicativo no me da la opción mediante el dbnavigator de llenar la tabla en el dbgrid, sino que todo viene vació(me refiero al dbgrid, logicamente ya que la tabla esta vacía), pero se me inhabilita el dbnavigator... ¿como pudiera hacer para que aunque el dbgrid no traiga ningún dato, solo porque la tabla esté vacía en la base de datos, aún así, funcione el db navigator y pueda añadir un primer registro desde el programa que hice y no recurrir a llenar un registro en la bd y despues si poder trabajar el resto llenado desde el programa?

Muchas gracias a todos.

Casimiro Notevi 15-09-2014 20:47:31

Se supone que tienes el botón 'insertar' en el dbnavigator, ¿no?

principiodual 15-09-2014 21:41:07

Cita:

Empezado por Casimiro Notevi (Mensaje 481512)
Se supone que tienes el botón 'insertar' en el dbnavigator, ¿no?

si amigo, la cuestion es que el bdnavigator aparece como desactivado cuando la tabla a la que hace conexión el dbgrid está vacía y el dbgrid viene vacio, pero mientras haya por lo menos un dato en la tabla y el dbgrid lo traiga, la barra dbnavigator estará activada y podrá insertar, eliminar y todo lo demás.

Casimiro Notevi 15-09-2014 22:43:51

¿Y el dataset (la tabla) está activo/abierto?

principiodual 15-09-2014 23:05:06

Cita:

Empezado por Casimiro Notevi (Mensaje 481523)
¿Y el dataset (la tabla) está activo/abierto?

si amigo, así tengo el código donde trabajo el dbnavigator.

Código Delphi [-]
procedure TForm3.cargaDBGRID;
begin
StrSQL:='';

StrSQL:='SELECT * FROM GEINVZLA_TB_CUENTAS;';

  Cn002  := TADOConnection.Create(nil);
  adotComponents := TADOQuery.Create(nil);
  //Conexion a la Base de datos
  Conectado2:=Open_DB (Cn002 , 5 , ServerDB, NameDB2, '', PasswordDB, '' );


  //si hay conexion continue con el proceso
  if Conectado2 then
  Begin

    //Se Abre el DataSet de la factura
    Conectado2:= Open_ADO_Qry(Cn002,adotComponents,StrSQL,false);

    // Verifica si se Abrio el DataSet

  adotComponents.Open;
  adotComponents.Edit;
  adotComponents.Insert;

   if Conectado2 then
    Begin
      with adotComponents do begin
        while not Eof do
        Begin
          dsComponents.DataSet:= adotComponents;
          with DBGrid1 do begin
              TabOrder := 0;
              TitleFont.Color := clWindowText;
              TitleFont.Height := -14  ;
              TitleFont.Name := 'MS Sans Serif';
              TitleFont.Style := [fsBold]   ;
              DataSource := dsComponents  ;
                 end;
           DBNavigator1.DataSource:=dsComponents;
           DBGrid1.DataSource:=dsComponents;
           Next;
        End;
        First;
      End;
    End;
  End;
End;

ecfisa 15-09-2014 23:15:24

Hola principiodual.

Por favor cuando incluyas código en tus mensajes usa las etiquetas para darle legibilidad. Uso:



Ya las agregué en tu mensaje.

Saludos y gracias por tu colaboración :)

principiodual 15-09-2014 23:22:45

Amigo ya lo resolví y disculpa si no identifico el código, no me agarra el éditor de codigo en respuesta... pero público aquí como me funciona por si a alguién mas le paso algo así y muchas gracias, porque con tus preguntas me hiciste analizar mejor el código y poderme dar cuenta de mi error... Aquí está el código como me funciona... el primer error es que uso la misma variable Conectado2 veces, cree otra var que se llama Conectado3 y saque la carga del dbgrid y el dbnavigator fuera del ciclo controlado por el Conectado3, quedando así.

principiodual 15-09-2014 23:26:50

Cita:

Empezado por ecfisa (Mensaje 481529)
Hola principiodual.

Por favor cuando incluyas código en tus mensajes usa las etiquetas para darle legibilidad. Uso:



Ya las agregué en tu mensaje.

Saludos y gracias por tu colaboración :)

Gracias por la acotación, estoy por opera y no me agarra las etiquetas, voy a abrir la página por Mozilla a ver si es el navegador y publicar el código como me funciona, por si alguién mas le llegase pasar lo mismo que a mi tenga la solución... Gracias :D

principiodual 15-09-2014 23:35:31

aquí está el código como me funciona, ahora si puede agregar aún el dbgrid venga vacio ya sea porque la tabla a la que se conecta no tiene datos y pueda ser llenado directo desde el aplicativo o programa.

Código Delphi [-]
procedure TForm3.cargaDBGRID;
begin
StrSQL:='';

StrSQL:='SELECT * FROM GEINVZLA_TB_CUENTAS;';

  Cn002  := TADOConnection.Create(nil);
  adotComponents := TADOQuery.Create(nil);
  //Conexion a la Base de datos
  Conectado2:=Open_DB (Cn002 , 5 , ServerDB, NameDB2, '', PasswordDB, '' );


  //si hay conexion continue con el proceso
  if Conectado2 then
  Begin

    //Se Abre el DataSet de la factura
    Conectado3:= Open_ADO_Qry(Cn002,adotComponents,StrSQL,false);

 

  adotComponents.Open;
  adotComponents.Edit;
  adotComponents.Insert;

  dsComponents.DataSet:= adotComponents;       
  DBGrid1.DataSource:=dsComponents;
  DBNavigator1.DataSource:=dsComponents;


   if Conectado3 then
    Begin
      with adotComponents do begin

        while not Eof do
        Begin
        
          with DBGrid1 do begin
              TabOrder := 0;
              TitleFont.Color := clWindowText;
              TitleFont.Height := -14  ;
              TitleFont.Name := 'MS Sans Serif';
              TitleFont.Style := [fsBold]   ;
              DataSource := dsComponents  ;
                 end;
           Next;
        End;
        First;
      End;
    End;
  End;
End;

Cita:

Muchas gracias Casimiro Notevi y Ecfisa, como siempre un sitio web muy eficiente y colaborador con todos nosotros. Buenas tardes. :D
P.D= El navegador Opera no acepta las etiquetas del formato de respuesta que usan en el sitio web, tuve que usar Mozilla, no se si sea cuestión de opera o de Club Delphi.

ecfisa 16-09-2014 00:05:52

Hola principiodual.

No he probado con el navegador Opera pero voy a revisarlo.

Saludos y muchas gracias por avisarnos. :)

ecfisa 16-09-2014 00:15:57

Hola de nuevo.

Acabo de descargar el Opera (ver.: Stable 24.0.1558.53) y no me ha dado problemas (te estoy escribiendo este mensaje desde él)
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  Caption:= '';
  for i:= 0 to 9 do
    Caption:= Caption + IntToStr(i);
end;
Tal vez sea causa de algún plugin o alguna configuración que hayas echo en el navegador ...

Saludos :)

Edito: Muchas gracias por publicar como lo solucionaste. ^\||/


La franja horaria es GMT +2. Ahora son las 09:50:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi