Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-11-2010
rogeliogamberro rogeliogamberro is offline
Miembro
 
Registrado: oct 2008
Posts: 23
Poder: 0
rogeliogamberro Va por buen camino
Smile Una Consulta muy sencilla en DBF. Ayuda!!!

Hola a todos! Recurro a toda la gente de este foro porque estoy realizando un programa muy sencillo (estimo 20 0 30 lineas de código) para una institución sin fines de lucro. La idea es convertir unas tablas que se alojan en una base de datos SQL en tablas .DBF (que las interpreta un programa que ellos tienen).
La idea mia es borrar estas tablas .DBF y luego hacer la copia entera desde SQL.
Pese a que lo estoy programando en C++ Builder mi duda es conceptual y creo que se entenderá por la gran similitud que tiene con el Delphi.
Para intentar borrar las tablas .DBF utilice un componente TTable (como hago siempre) y se muestra en la figura siguiente:

img214.imagevenue.com/img.php?image=48387_Problema1_122_614lo.JPG

Luego agregué un TDataSource, un TDBgrid y un boton (como siempre) y hasta ahi veniamos bien.

img21.imagevenue.com/img.php?image=48638_problema2_122_456lo.JPG

En el boton escribi una instruccion para borrar la tabla pero al compilar y oprimir el boton me aparece este cartel:

img267.imagevenue.com/img.php?image=48640_Compila1_122_126lo.JPG

En realidad probé de muchas formas (borrar una sola linea, etc) y pasa lo mismo. Al modificar valores no sucede esto.
Entonces si aplico TRUE a la propiedad Exclusive me aparece "Table is Busy"

img184.imagevenue.com/img.php?image=48642_exclusive_122_1183lo.JPG

La verdad no se que hacer porque desde el punto de vista de la SQL (que suponia seria lo mas dificil) funciono en 10 minutos pero las DBF siguen con ese cartel.

Agradeceria cualquier tipo de aporte para solucionar el problema.

Atte. Rogelio
Responder Con Cita
  #2  
Antiguo 07-11-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Si fuera en Delphi el problema vendría dado por utilizar las tablas en uso exclusivo en vez de compartido, ya que el IDE es un usuario más.

Parto del supuesto de que las tablas no están abiertas por el otro programa en el momento de la acción.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 08-11-2010
rogeliogamberro rogeliogamberro is offline
Miembro
 
Registrado: oct 2008
Posts: 23
Poder: 0
rogeliogamberro Va por buen camino
Unhappy

El C++ Builder es exactamente igual al delphi en casi todo... Creo que una vez me comentaron algo asi como que el compilador transforma el codigo a dellphi y luego compila... En sus carpetas se encuentran muchas cosas de delphi... Ahora hablando de la DB funciona y reacciona igual que en delphi. Hasta el momento con las que he trabajado (paradox y sql) funcionaba asi pero esta dbf no se deja poner el exclusive a true... alguien sabe porque?
Responder Con Cita
  #4  
Antiguo 08-11-2010
rogeliogamberro rogeliogamberro is offline
Miembro
 
Registrado: oct 2008
Posts: 23
Poder: 0
rogeliogamberro Va por buen camino
Gracias por responder Marcos!!! y como lo soluciono para que no me tire el cartel??
Responder Con Cita
  #5  
Antiguo 08-11-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Tienes que abrir las tablas en modo compartido como te comentaba.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 08-11-2010
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 20
newtron Va camino a la fama
Claramente el problema que estás teniendo es que no estás abriendo la tabla en modo exclusivo, cosa que te hace falta para poder borrarla. Seguramente algún componente u otro usuario de la aplicación tiene la tabla abierta. Yo probaría a quitar el datasource y el dbgrid y solamente dejar un botón que abra la tabla en modo exclusivo y borrarla.

Espero haberte ayudado en algo.

Saludos
Responder Con Cita
  #7  
Antiguo 08-11-2010
rogeliogamberro rogeliogamberro is offline
Miembro
 
Registrado: oct 2008
Posts: 23
Poder: 0
rogeliogamberro Va por buen camino
Smile

Gracias Marcos y newtron.

Sigo leyendo y aprendiendo. Parece ser que la DBF de fox pro tiene un archivo .CDX que no se que es pero estimo que el problema se puede encontrar ahi... o esté relacionado con eso.

Estuve mirando lo del Exclusive y me resulto imposible hacerlo funcionar. Con las bases de datos paradox (que son las que he usado) siempre me funciono. La verdad es que esto me tiene desconcertado y ahora estoy descubriendo que existe algo llamado Maestro/Detalle que relaciona las tablas.

Simplemente soy aficionado al tema y deseo colaborar con este sencillo programita. Agradeceria todo tipo de orientacion u informacion para leer al respecto. Grax
Responder Con Cita
  #8  
Antiguo 08-11-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
El archivo CDX corresponde a los índices.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #9  
Antiguo 08-11-2010
Avatar de gmontes
gmontes gmontes is offline
Miembro
 
Registrado: jul 2004
Ubicación: Culiacán, Sinaloa, México
Posts: 668
Poder: 20
gmontes Va por buen camino
consultando nuestros foros, encontre esto:

Cita:
Bueno encontré una solución para eliminar físicamente los registros de una tabla (funciona para tablas DBF). La encontré en el Trucomanía. (para el que no lo conoce http://www.q3.nu/trucomania/).

SOLUCION:
-Incluye 'DBE' en el uses de tu form
-y utiliza esta funcion para compactar la tabla:

Código Delphi [-]
procedure PackDBF(Tabla: TTable);
begin
Check(DbiPackTable(Tabla.DBHandle, Tabla.Handle, nil, szDBASE, True))
end;

Pero cuidado, para poder compactar la tabla, ésta debera estar abierta en modo exclusivo. Ejemplo:

Código Delphi [-]
{Cerramos la tabla/Close table}
Table1.Close;
{En Modo exclusivo/Exclusive mode}
Table1.Exclusive:=True;
{Abrimos tabla/Open table}
Table1.Open;
{Compactar/pack}
PackDBF(Table1);

{Reabrir tabla/reopen table}
Table1.Close;
Table1.Exclusive:=False;
Table1.Open;
post colocado por Roilo
http://www.clubdelphi.com/foros/showthread.php?t=31125


o borrar la tabla con sql

Código:
DROP TABLE
----------

  DROP TABLE nomtabla

Esta sentencia SQL borra una tabla.

Ejemplo:

  ...
  Query1.SQL.Text := 'DROP TABLE "Productos.DBF"';
  Query1.ExecSQL;
  ...
__________________
Todos llevamos nuestros demonios a cuestas..

Última edición por gmontes fecha: 08-11-2010 a las 23:12:24.
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
Una consulta sencilla codicia Varios 3 21-12-2009 04:54:06
Consulta muy sencilla, extrañamente lenta Angel Fernández Firebird e Interbase 33 25-07-2008 20:57:47
Consulta sencilla sobre ms access fybeyancourt Tablas planas 2 05-03-2007 22:51:58
Error raro en consulta sencilla papulo SQL 1 16-09-2005 10:41:42
Consulta Sencilla SQL + Delphi Maury Manosalva SQL 4 08-09-2005 11:17:47


La franja horaria es GMT +2. Ahora son las 08:44:20.


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