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 04-01-2005
Phacko Phacko is offline
Miembro
 
Registrado: jul 2004
Posts: 157
Poder: 20
Phacko Va por buen camino
Copiar registros ordenados a otras tablas...

Que tal???.

Necesito copiar registros de una tabla a otra, en forma ordenada alfabeticamente a partir del campo nombre. He intentado usando SQL, Insert Into, pero me da el error "Error al crear manejador del cursor", no alcanso a entender a que se refiere. A continuación el codigo que utilizo en la propiedad SQL del componente:

Insert Into Ordenada(Code,Nombre,Telefono)
Select Code,Nombre,Telefono
From "Prueba.db"
Where Code>4


Lo modifique de la siguiente forma:

Insert Into Ordenada(Code,Nombre,Telefono)
Select a1.Code,a1.Nombre,a1.Telefono
From "Prueba.db" a1
Where a1.Code>4


El error me da al pasar a True la propiedad Active del componente.

Algo mas, disculpen, me da error al agregar la instrucción:
Order By Nombre.

Gracias por su ayuda.
Responder Con Cita
  #2  
Antiguo 05-01-2005
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
Cita:
Empezado por Phacko
me da el error "Error al crear manejador del cursor"

[...]

El error me da al pasar a True la propiedad Active del componente.
Ayudaría que indicaras qué componente usas pero en términos generales debes usar el método ExecSQL para ejecutar la consulta en lugar de poner Active := true. Esto último se usa en consultas que seleccionan registros en las que debe establecerse un cursor para recorrer los resultados. Como INSERT no regresa registros no hay forma de crear el cursor y de ahí el error.

// Saludos
Responder Con Cita
  #3  
Antiguo 05-01-2005
Phacko Phacko is offline
Miembro
 
Registrado: jul 2004
Posts: 157
Poder: 20
Phacko Va por buen camino
Gracias.....

Toda la razon del mundo, te lo agradesco.

Algo mas, Para hacer uso de la instruccion:
Order By Nombre.

Para guardar los registros obtenidos con la consulta en forma alfabetica a partir del campo nombre, se requiere definir algun indice???? Ya que al agregar dicha linea al codigo del hilo anterior, me da el error:
"Invalid use of keyword"
Token:Order

Se los agradesco de antemano.
Gracias Roman
Responder Con Cita
  #4  
Antiguo 05-01-2005
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
Hasta ahora no has indicado con qué tablas trabajas. Ciertamente el order by no funcionará en cualquier base de datos. Haciendo unas pruebas veo que, por ejemplo, funciona en MySql pero no en Paradox.

Sin embargo cabe aquí una pregunta: ¿realmente necesitas copiar los registros en forma ordenada? A fin de cuentas, el orden físico de los registros en una tabla es- o debiera ser -indistinto. Para ello existen índices.

Incluso cabría preguntar si es necesario copiar la tabla o te bastaría crear un índice sobre el campo nombre de la tabla original.

// Saludos
Responder Con Cita
  #5  
Antiguo 05-01-2005
Phacko Phacko is offline
Miembro
 
Registrado: jul 2004
Posts: 157
Poder: 20
Phacko Va por buen camino
Gracias.......

Que tal....????

Pues bien, la misma pregunta me habia hecho, pero como soy nuevo en esto de las bases de datos, de hecho tambien lo soy en Delphi, pense en otras posibilidades para terminar este pendiente que tengo, pero creo que esta saliendo contra-producente.

Lo que necesito es manejar los registros (en otra aplicación, emplee la de los telefonos para hacer pruebas) que se capturan en una ventana, ordenados en forma alfabetica por producto y despues por tipo, es decir, Pantalon->tipo, Camisa->Tipo, para posteriormente modificar los valores de otros 3 campos, como por ejemplo Existencia, Precio, Cantidad Vendida. Ya que al momento de realizar la venta se necesita tener en cuenta la existencia del producto y el precio. Pero con lo que has dicho en el hilo anterior, creo que ya baile, porque estoy trabajando en PDX.

Me podrias recomendar alguna opción???, quiza indice sobre Producto y uno mas sobre Tipo, pero la verdad no tengo idea de como hacerlo.....

Gracias de antemano
Responder Con Cita
  #6  
Antiguo 05-01-2005
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
Pues lo dicho, ya sea que copies la tabla o uses la original, no necesitas tener los registros ordenados físicamente, basta que establezcas un índice, pero no uno por cada campo sino uno sólo que abarque ambos campos (producto y tipo). Así, cuando actives este índice, los registros se listarán en el orden que deseas.

Por otra parte, supongo que deseas mostrarlos ordenados para que al usuario le sea fácil encontrar el que desea modificar. Pero tienes otras opciones. Por ejemplo, en lugar de mostrar todos los registros, filtra el listado por producto y muestra sólo los registros correspondiente a ese producto ordenados por tipo, y si son muchos tipos para cada producto podrías filtrar también por tipo.

Puedes hacer esto usando un ComboBox para que el usuario escoja el producto y según lo que seleccione establecer un filtro en la tabla y asignarle un índice sobre el tipo para que los muestre ordenados por tipo.

// Saludos
Responder Con Cita
  #7  
Antiguo 06-01-2005
Phacko Phacko is offline
Miembro
 
Registrado: jul 2004
Posts: 157
Poder: 20
Phacko Va por buen camino
Gracias......

Agradesco tu ayuda, voy a ponerme a trabajar en los filtros.


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


La franja horaria es GMT +2. Ahora son las 04:41: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