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 11-01-2007
gamez2809 gamez2809 is offline
Registrado
 
Registrado: ene 2007
Posts: 3
Poder: 0
gamez2809 Va por buen camino
Que pasa con mi base de datos!???

Que tal amigos!? Soy nuevo en este foro, quisiera que alguien me ayudara con este problema que tengo, no se por donde atacarlo..

La situacion es esta, estoy haciendo un proyecto de punto de venta en delphi 6, y estoy utilizando Paradox, normalmente no tengo este problema.

Tengo una tabla con varios campos, y ya tiene muchos registros, pero le acabo de agregar el campo Year, y mediante un procedimiento lo llené para todos los registros que ya tenia ,checo la tabla con Database Desktop y efectivamente el campo Year esta lleno, pero al seguir programando un rato despues me encuentro con que la tabla esta como antes, con el campo Year vacio para todos los registros. Ejecuto varias veces el programa y ahi estan los datos que escribi.. pero a las tantas de repente los datos ya no estan...

Esto no es todo... copio todos los archivos que se generan de la tabla, incluyendo los indices y todo, a otra carpeta, cuando el campo Year de la tabla esta lleno, y al abrir la tabla con Database Desktop, desde la nueva ubicacion de la tabla, dicho campo esta vacio otra vez!!! como si un documento de excel no guardara los ultimos cambios.

Esto tambien me paso al agregar automaticamente muchos registros a otra tabla.. la abri de nuevo, y los registros ya no estaban... no se que sucede... quizá es mi metodo para escribir los datos a la tabla.. les dejo el codigo, y espero que alguien me eche una mano...

Código Delphi [-]
{ Este es el codigo que me dio el problema del campo Year}
ventas.Filtered:=false;
        ventas.First;
        for i:=1 to ventas.RecordCount do
                begin
                        ventas.Edit;
                        ventas['year']:=strtoint(copy(ventas['fecha'],7,4));
                        ventas.Post;
                        if ventas.Eof=false then ventas.Next;
                end;

{ Este es el que me preocupa mas, porque los datos no se guardan por mucho tiempo... desaparecen }

        ventas.First;
        for i:=1 to ventas.RecordCount do
                begin
                        if clientes.Locate('nombre',ventas['nombre'],[])=false then
                                begin
                                        clientes.Append;
                                        clientes['nombre']:=ventas['nombre'];
                                        clientes['domicilio']:=ventas['domicilio'];
                                        clientes['ciudad']:=ventas['ciudad'];
                                        clientes['rfc']:=ventas['rfc'];
                                        clientes['vendedor']:=ventas['vendedor'];
                                        clientes.Post;
                                end;
                        if ventas.Eof=false then ventas.Next;
                end;

Muchas Gracias!!!
Responder Con Cita
  #2  
Antiguo 11-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Primero que nada, bienvenido al Club y felicidades porque son pocos quienes en su primer mensaje usan las etiquetas correctas.

Ahora bien, en cuanto al asunto que preguntas pues no sé yo cuál pueda ser la razón de que desparezcan los datos, sobre todo porque comentas que ya los has visto con el Database Desktop.

Sin embargo, el código que muestras es un poco raro porque lo usual para recorrer una tabla es:

Código Delphi [-]
ventas.First;

while not ventas.EoF do
begin
  ...

  ventas.Next;
end;

en lugar de basarse en el número de registro. Por otro lado, yo creo que te convendría más usar un Query para la actualización, usando la siguiente consulta SQL:

Código SQL [-]
update ventas
set year = extract(year from fecha)

en el caso de qe fecha sea de tipo DATE. Si no, si es un alfanumérico, entonces puedes usar la función SUBSTR:

Código SQL [-]
update ventas
set year = substring(fecha from 7 for 4)

Cualquiera de las dos opciones, además de hacer la actulización en un sólo paso, puedes hacerla desde el SQL Explorer, de manera que ni siquiera tendrías que programar un procedimiento.

// Saludos
Responder Con Cita
  #3  
Antiguo 11-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Una corrección:

Como year es una palabra reservada para paradox, las consultas SQL deberán ser:

Código SQL [-]
update ventas
set "ventas"."year" = extract(year from fecha)

De cualquier manera, te convendría cambiar el nombre del campo para evitar problemas.

// Saludos
Responder Con Cita
  #4  
Antiguo 11-01-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Comprueba que cierras la tabla antes de finalizar la aplicación. De hecho, prueba a cerrarla justo después del código para rellenar el campo. Puede ser que la aplicación no cierre la tabla correctamente, entonces no se actualizarán los datos, sólo los verás mientras esté la aplicación funcionando. Y si copias, como dices, los datos a otra carpeta, estarán vacíos.
Responder Con Cita
  #5  
Antiguo 11-01-2007
gamez2809 gamez2809 is offline
Registrado
 
Registrado: ene 2007
Posts: 3
Poder: 0
gamez2809 Va por buen camino
Thankz

Que tal, gracias por sus respuestas, realmente cuando aprendi a programar en delphi no profundice mucho en base de datos, asi que lo que se hacer es casi puro instinto, jeje, gracias por el consejo con el codigo, y en cuanto lo de cerrar las tablas, en que consiste? es ponerlas en active:=false ? o no me enseñaron eso? Gracias por su ayuda!

Saludos
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
Añadir datos desde una base de datos a un TListBox proyecto Conexión con bases de datos 1 21-11-2006 07:01:19
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
Entender lo que pasa con mis datos IVAND Conexión con bases de datos 6 03-02-2006 14:23:53
ubicar archivo, con datos sacados de base de datos Giniromero Varios 19 20-10-2005 16:23:02
Reto Para Expertos En Base De Datos Y Tipos De Datos.... (blob) frankmch Conexión con bases de datos 2 08-09-2003 19:44:52


La franja horaria es GMT +2. Ahora son las 12:36:06.


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