Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-09-2008
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
¿Como guardar una tabla desde el componente shell treeview?

Que tal programadores...

Es la primera vez que utilizo esta herramienta para escribir dudas...

Anteriormente tuve buenos resultados con una ayuda para convertir de números a letras del amigo de este foro quien comparte el codigo "Contraveneno" y fue de gran ayuda...

Ahora necesito resolver otro problema!!!...

Necesito guardar una Tabla usando el componente shell treeview...

El problema es que no tengo idea como programar o en que evento de ese componente... la idea es que el usuario explore las direcciones y según guarde la tabla en la dirección que selecciono para eso tendria que darle click
a la ubicación seleccionada y despues con un boton validar si dio click con la ubicacion en el shell treeview que me guarde...

ya se como guardar por medio de un boton la tabla pero el problema es que yo dentro del boton por defaul pongo la ubicacion por ej. C:Tabla.db

pero yo quiero que el usuario seleccione la ruta que el quiera y que valide por medio de un boton y guarde, no se si me explique...

de antemano muchas gracias si alguien me pueda ayudar...

Y si necesitan de mi ayuda no duden en mandarme por este medio...

sus inquietudes... o manden un mensaje privado...

Aqui les dejo mis direcciones de correo electronico por si necesitan de algo...

jcrebollosa@hotmail.com, krlox_sabroxas@hotmail.com

estoy a sus ordenes
Responder Con Cita
  #2  
Antiguo 01-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola krlox31416, según a lo que te entiendo, tu quieres obtener el path que se selecciona en el ShellTreeView, lo puedes hacer de esta forma.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 showmessage(ShellTreeView1.SelectedFolder.PathName);
end;

sobre el path que tienes, despues sería aumentar el slash, con la función TrailingBackslash o una cadena '\' y concatenar el nombre de tu archivo que ya lo tienes.

Otra forma de seleccionar una carpeta es usando SelectDirectory.

Código Delphi [-]
var
  Carpeta : String;
begin
  if SelectDirectory('Seleccione la ruta de la carpeta', 'c:\', Carpeta) then
  begin
   showmessage(Carpeta+'\Tabla.DB');
  end;

para este ultimo añades en el uses la unidad FileCtrl.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 01-09-2008
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
Ok's Caro voy a checar estas lineas de codigo

Primeramente gracias Caro por tu ayuda...

No pense que tan pronto respondieran al llamado... ya veo que esto si funciona y bien!!!

voy a checar estas lineas de codigo que me regalaste...

yo estoy trabajando con delphi 5 y 6, voy a checar los componentes que se necesitan...

despues te cuento que tal me fue va...

y de nuevo 1000 % gracias... por la ayuda...

si necesitas de mi ayuda mandamelas por este medio...
ya tienes mis correos alternativos!!!...

saludos desde San Juan del Río Queretaro. México
Responder Con Cita
  #4  
Antiguo 13-09-2008
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
shell treeview respuesta a caro

Que tal Caro!!!
Disculpa que no mande respuesta inmediatamente pero lo que paso fue que ya había respondido antes ya 3 veces y me sacaba de la pagina ya que antes de mandar el mensaje le di en vista previa para ver como quedaba el mensaje y me saco de la pagina por lo que perdí todo lo que te había escrito junto con el código que púese…

Y otro problema es que no se a donde ir para poder ver la respuesta que mandaste o la dirección que se crea al preguntar dudas en este foro no se como ir al hilo sobre mi tema
Por lo que mejor lo abri desde el Hotmail y directamente me abre sobre el tema…

Pero = me traba la maquina ¡!! Estoy desesperado por mandarte este mensaje!!!

Bueno en fin aquí pongo lo anterior zaz!!!

Este es el código que utilizo para copiar una tabla usado para respaldar una tabla


Código Delphi [-]
// con este código copio mi tabla desde esta ubicación C:\sistema_caja\base de //datos\articulos.db
// y después la guardo por defaul en esta otra ubicación C:\articulos.db

procedure TForm1.Button2Click(Sender: TObject);
begin
if not CopyFile (Pchar ('C:\sistema_caja\base de datos\articulos.db'), Pchar ('C:\articulos.db'),false) then
begin
Application.MessageBox('La base de datos artículos no se puede respaldar'
+#13'debido a que no existe.','Error',MB_ICONERROR);
end
else
begin
Application.MessageBox('La base de datos artículos se ha respaldado ! ! !','Información',MB_ICONINFORMATION);
end;
end;

end.





Y en el código que me pasaste ya cheque para que sirve y que es lo que hace busque en la ayuda de delphi 5 para que sirve el SelectDirectory y vi un ejemplo así que no tuve ningún problema en saber que hacia el SelectDirectory … este funciona como si se tratara del shell treeview…


Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
My_carpeta: String;
begin
if SelectDirectory('Seleccione la ruta de la carpeta', 'C:\sistema_caja\base de datos\articulos.db', My_carpeta) then
begin
showmessage(My_carpeta);
end;
end;





lo que note fue que si concateno dos a más tablas usando el SelectDirectory me aparece como si usara el componente shell treeview eje:


Código Delphi [-]
procedure TForm1.Button4Click(Sender: TObject);
var
my_carpeta :String;
begin
SelectDirectory('Selecione las bases de datos','C:\sistema_caja\base de datos\articulos.db + proveedores.db + contraseña.db + estado_caja.db', My_carpeta);
end;





de lo contrario si pongo una sola tabla


Código Delphi [-]
procedure TForm1.Button4Click(Sender: TObject);
var
my_carpeta :String;
begin
SelectDirectory('Selecione las bases de datos','C:\sistema_caja\base de datos\proveedores.db', My_carpeta);
End;





Me aparece solo la tabla según sea el caso

Pero según yo el código que me pasaste no me ayuda para lo que deseo que es copiar una tabla o tablas desde cierta ubicación para después guardar una tabla o tablas
aunque no esta demas saber en que ruta se esta guardando


Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);

begin

showmessage(ShellTreeView1.SelectedFolder.PathName);

end;





pero se supone que con el shell treeview ves visualmente y seleccionas la ruta en la que vas a guardar la tabla o tablas

por otra parte no supe lo de: despues sería aumentar el slash, con la función TrailingBackslash o una cadena '\' y concatenar el nombre de tu archivo que ya lo tienes.no se para que sirve la función TrailingBackslash y eso del slash


o no supe como hacer a andar el código será que algo estoy haciendo mal o que me hace falta…

si estoy mal en algo corrígeme!!!

Y si hay alguien más que pueda ayudarme de antemano se lo agradeceré…

Si en algo puedo ayudarles estoy a sus ordenes!!!…


Saludos desde San Juan del Río, Querétaro, México...
Responder Con Cita
  #5  
Antiguo 16-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo krlox31416, para poder ver el hilo que has abierto, puedes buscarlo de varías formas, al ingresar por la pagina principal del club tienes varias opciones, Editar Perfil, Editar Opciones,Ver mensajes privados, ingresas a cualquiera de ellos, al lado izquierdo buscas Ver suscripciones para que te salga un listado de todos los hilos en los que estas participando, también lo puedes buscar en el subforo que lo has abierto el hilo, incluso con el buscador.

Sobre tu pregunta, lo que te pase es para seleccionar el directorio donde copiaras tu archivo, nose si te estoy entendiendo bien, tu quieres copiar los archivos que tengas en la carpeta C:\sistema_caja\base de datos\ que pueden ser uno o varios, si es así entonces tendras que recorrer la carpeta y copiar los que tengan extención db.

Código Delphi [-]
var
 Origen, Destino, aPath : String;
 sr: TSearchRec;
begin
 aPath := 'C:\sistema_caja\base de datos\';
  if FindFirst(aPath + '*.db', faAnyFile, sr) = 0 Then
     repeat
       Origen := aPath+sr.Name;
       Destino := my_carpeta+'\'+sr.Name;
       CopyFile(PChar(Origen), PChar(Destino), False);
     until FindNext(sr) <> 0;
   FindClose(sr);
end;

donde en my_carpeta esta el directorio seleccionado por el usuario, mas o menos así sería, sobre el TrailingBackslash es para que te añada el slash o barra '\' al final de tu path.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #6  
Antiguo 17-09-2008
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
Talking deja checo el codigo

gracias caro deja voy a checar este codigo...
pero era lo de menos copiar una o más tablas...
lo que quiero es el guardar en el destino...
espera mi siguiente respuesta haber que tal ma va...

gracias ....

disculpa mi ignorancia sobre el uso del shell treeview...

te escribo pronto...

saludos!!!!....
Responder Con Cita
  #7  
Antiguo 20-09-2008
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
Solucionado my problema!!!

Cita:
Solucionado my problema!!!
Gracias !!! Gracias!!!… 1000 Gracias!!!... CAAAAAARRRRROOOOOOOOO!!!
Ajuste el código con tus ideas…
Solo le concatene esto que anteriormente me regalaste al nuevo código que me pasaste… Claro que además debes pegar el componente shell treeview a la forma.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ShellTreeView1.SelectedFolder.PathName);
end;

Cita:
Basto concatenar esto:
Código Delphi [-]
ShellTreeView1.SelectedFolder.PathName //que es de tipo string

Cita:
A tu otro código
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
Origen, Destino, aPath ,my_mensaje: String;
sr: TSearchRec;
begin
my_mensaje:='En la siguiente ubicación ';
aPath := 'C:\sistema_caja\base de datos\';
if FindFirst(aPath + '*.db', faAnyFile, sr) = 0 Then
repeat
Origen := aPath+sr.Name;
Destino := ShellTreeView1.SelectedFolder.PathName + '\' + sr.Name; //aqui en esta linea le concateno lo anterior
CopyFile(PChar(Origen), PChar(Destino), False);
until FindNext(sr) <> 0;
SysUtils.FindClose(sr);
Application.MessageBox('Las bases de datos se han respaldado!!!','Hasta que me quedo Caro!!!',MB_ICONINFORMATION);
MessageDlg( my_mensaje + ShellTreeView1.SelectedFolder.PathName,mtInformation,[mbOK],0);
end;
end.

Cita:
Esto si funciona amigos!!!
Insisto Caro en que haces magia!!! Como le haces??? Hee???

Ya que ando emocionado y aprovechando este mismo tema!!!

Que me faltaría para guardar las tablas en una carpeta llamada respaldo o cualquier nombre???

Estoy a tus ordenes!!! Caro!!!
Saludos Caro!!! desde San Juan del Río, Querétaro, México.

Última edición por krlox31416 fecha: 20-09-2008 a las 00:20:18. Razón: ya en vsita previa aparece sinatxis del tipo de letra
Responder Con Cita
  #8  
Antiguo 22-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo krlox31416, que bueno que te haya servido lo anterior que te puse, ahora sobre tu pregunta, supongo que en base al path que ha escogido en tu ShellTreeView tu quieres crear un directorio si que no existiera, paar ello puedes utilizar la función CreateDir para crear y DirectoryExists para verificar si existe.

Código Delphi [-]

 PathDestino := ShellTreeView1.SelectedFolder.PathName+'\Respaldo';
 if not DirectoryExists(PathDestino) then
  CreateDir(PathDestino); //Creamos el directorio ...................
Origen := aPath+sr.Name;
Destino :=  PathDestino+'\'+ sr.Name; //aqui en esta linea le concateno lo anterior
CopyFile(PChar(Origen), PChar(Destino), False);

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #9  
Antiguo 27-09-2008
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
es exactamente lo que queria

ya anteriormete había guardado ese código de este mismo foro pero no me acordaba que ya lo había buscado y pegado en un documento en word...

pero de que jala, jala de maravilla...

y pues te felicito que sigas así apollando a los que neceitamos una ayudadita...

y disculpa si tardo en contestar pero como no tengo internet...

pues solo cuando tengo para venir y conectarme en un cibercafe...

me gustaria contribuir en este foro por lo que voy a ver como puedo subir mis pequeños programas ejecutables y con todo y codigo...

te agregue a mi lista de contactos!!!... eres la número 3 jjijiji...
pero como podras ver apenas estoy aprendiento a utilizar este foro...
saludos... y espero proto poder ayudarte...
Responder Con Cita
  #10  
Antiguo 29-09-2008
Avatar de krlox31416
krlox31416 krlox31416 is offline
Miembro
 
Registrado: jun 2008
Ubicación: San Juan del Río, Querétaro, México
Posts: 75
Poder: 16
krlox31416 Va por buen camino
así quedo!!!

Código Delphi [-]
unit Unit1;
interface
{El siguiente programa fue creado con la ayuda de Caro
 así que aclaro que todo el crédito se lo doy a ella
 yo lo único que hice fue investigar para que serbia cada variable,
 métodos y jugar con el código, etc, etc..
 Este programa lo que hace es respaldar ciertas bases de datos
 contenidas en mi directorio C:\sistema_caja\base de datos\
 y copiarlas a una ubicación destino por medio del componente
 shelltreeview de la pestaña Samples, primero selecionamos la ruta
 al darle click sobre este mismo componente y después guardamos
 pulsano cualquiera de los botones
 Las tablas seran guardas en la dirección seleccionada por el shell
 dento de su carpeta creada según el nombre asignado.
}

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ShellCtrls, ExtCtrls, SkinCaption,
  WinSkinData, Buttons;
type
  TForm1 = class(TForm)
    ShellTreeView1: TShellTreeView;
    Bevel1: TBevel;
    SkinData1: TSkinData;
    SkinCaption1: TSkinCaption;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
// Crea una carpeta llamada Respaldo y guarda en ella las tablas con extención .db
// con la ayuda de un ciclo repeat

// el mismo =ado con un while mi propuesta
// = y pueden elegir su propio nombre para la carpeta
// sin que sea definido dentro de la sintaxis del código
// eso lo dejo para quien quiera seguir jugando con este código
// basta declarar una variable más y concatenarla
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption:='Abrir carpeta';
end;
// Crea una carpeta llamada Respaldo y guarda en ella las tablas con extención .db
// con la ayuda de un ciclo repeat
procedure TForm1.BitBtn1Click(Sender: TObject);
var PathDestino, Origen, aPath, Destino, my_mensaje : string;
sr: TSearchRec;// para definir el tipo de busqueda
begin
my_mensaje:='Y se han guardado en la siguiente ubicación.'+#13;
PathDestino := ShellTreeView1.SelectedFolder.PathName+'\[ Respaldo Caro me ayudo ]'; //creamos el nombre de mi carpeta y concatenamos al directorio
if not DirectoryExists(PathDestino) then // verifica que no exista una carpeta con el nombre Respaldo al directorio destino
   begin
   aPath := 'C:\sistema_caja\base de datos\';//asignamos el origen de mis tablas
   if FindFirst(aPath + '*.db', faAnyFile, sr) = 0 Then  //busca el primer archivo .db o cualquiera
   repeat
   CreateDir(PathDestino); //Creamos el directorio ...................
   Origen := aPath+sr.Name;//directorio origen o path
   Destino :=  PathDestino+'\'+ sr.Name; //aqui agregamos las tablas a la carpeta
   CopyFile(PChar(Origen), PChar(Destino), False);// copiamos de mi origen al destino
   until FindNext(sr) <> 0;// hacer todo el recorrido hasta encontrar mi archivo
   SysUtils.FindClose(sr);//cerramos la busqueda del archivo
   Application.MessageBox('Las bases de datos se han respaldado ! ! ! ','Información',MB_ICONINFORMATION);
   MessageDlg( my_mensaje + ShellTreeView1.SelectedFolder.PathName + '\[ Respaldo Caro me ayudo ]',mtInformation,[mbOK],0);
   end
   else
   begin
   Application.MessageBox('Uuuuuy hijo la carpeta ya existe.','Orrorsote',MB_ICONERROR);
   Application.MessageBox('Suerte para la proxima! ! !','Suerte',MB_ICONINFORMATION);
   end;
end;

// el mismo =ado con un while mi propuesta!!!
// = y pueden elegir su propio nombre para la carpeta
// sin que sea definido dentro de la sintaxis del código
// eso lo dejo para quien quiera seguir jugando con este código
// basta declarar una variable más y concatenarla

procedure TForm1.BitBtn2Click(Sender: TObject);
var PathDestino, Origen, aPath, Destino, my_mensaje : string;
sr: TSearchRec;// para definir el tipo de busqueda
begin
my_mensaje:='Y se han guardado en la siguiente ubicación.'+#13;
PathDestino := ShellTreeView1.SelectedFolder.PathName+'\[ Respaldo Caro me ayudo ]'; //creamos el nombre de mi carpeta y concatenamos al directorio
if not DirectoryExists(PathDestino) then // verifica que no exista una carpeta con el nombre Respaldo al directorio destino
   begin
   aPath := 'C:\sistema_caja\base de datos\';//asignamos el origen de mis tablas
   if FindFirst(aPath + '*.db', faAnyFile, sr) = 0 Then  //busca el primer archivo .db o cualquiera
      begin
      while FindNext(sr) = 0 do  //hasta terminar nuestro recorrido
           begin
           CreateDir(PathDestino); //Creamos el directorio ...................
           Origen := aPath+sr.Name;//directorio origen o path
           Destino :=  PathDestino+'\'+ sr.Name; //aqui agregamos las tablas a la carpeta
           CopyFile(PChar(Origen), PChar(Destino), False);// copiamos de mi origen al destino
           end;
      Application.MessageBox('Las bases de datos se han respaldado ! ! ! ','Información',MB_ICONINFORMATION);
      MessageDlg( my_mensaje + ShellTreeView1.SelectedFolder.PathName + '\[ Respaldo Caro me ayudo ]',mtInformation,[mbOK],0);
      SysUtils.FindClose(sr);//cerramos la busqueda del archivo
      end;
   end
   else
   begin
   Application.MessageBox('Uuuuuy hijo la carpeta ya existe.','Orrorsote',MB_ICONERROR);
   Application.MessageBox('Suerte para la proxima! ! !','Suerte',MB_ICONINFORMATION);
   end;
end;
end.
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como guardar la fecha a una tabla irixita SQL 2 19-08-2008 18:59:49
componente como un treeview johurgi Varios 5 07-07-2008 08:32:12
Monitorear la shell desde delphi fide API de Windows 4 29-10-2007 04:11:59
como guardar pdf desde Crystal 8.0 con delphi alexander66 Impresión 1 15-12-2006 18:17:18
Ejecutar shell explorer.exe desde otra aplicación Pablo Carlos API de Windows 13 15-07-2004 16:37:30


La franja horaria es GMT +2. Ahora son las 07:36:54.


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
Copyright 1996-2007 Club Delphi