Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-03-2007
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 23
llonigualker Va por buen camino
Bueno, ya he leido bastante sobre el tema y voy a empezar a ponerlo en practica, pero me surgen una serie de dudas.

Primero decir que utilizo el EMS SQL Manager 2005 que me ha parecido bastante bueno para crear BD's y tablas y manejar estas (he de decir que la consulta que antes tardaba 15 segundos sobre una tabla paradox de 500.000 registros en red, ahora y segun la SP que he creado, me tarda 0,06 seg), y me he decantado por los MDO componentes (Mercury).

1.- Como se le dice a una SP, qué indice (de todos los que tenga una BD) deseo utilizar para la consulta.

2.- En el "for select ..... do" de una SP se supone que me recoje una serie de registros, pues bien, esos registros ¿como los muestro en un grid o en una stringlist o en dbgrid (esto creo que va a ser que no si no quiero usar MDOTable)? ya que no deseo utilizar el componente MDOTable (porque supongo que tendria el mismo problema de lentitud que con paradox).

3.- Perdonad por mi ignorancia pero.... ¿se puede manejar el resultado de la consulta de una SP (con su for select...do) en un MDOTQuery?.

4.- Si la aplicacion que voy a hacer tiene que correr tanto en monopuesto o en red (al usuario se le da la opcion de elegir una de las dos, nunca las dos a la vez) ¿como tengo que crear la BD con el EMS o con el IBExpert, en local o en remote?.

5.- Al hacer el traspaso de las tablas paradox a firebird con el InterbaseDataPump me dice que la BD está en "ForceWrite" y que el proceso tardará 3 veces más. Eso ¿qué es?, ¿Influirá esa caracteristica en la velocidad o lentitud de la aplicación?. ¿Cómo se puede cambiar esa caracteristica?.

6.- Vuelvo a insistir, perdonad por mi ignorancia, pero ahora mismo tengo un cacao de nuevos conceptos y adecuar mi forma de pensar (en programacion) a esos nuevos conceptos que a muchos no llego. He visto que en algunas SP hay al final unas lineas GRANT, ¿eso que es?, ¿Cual es su finalidad?. ¿No basta con llamarlas desde las MDOStoredProc sin esas lineas al final?.

7.- ¿Debo utilizar firebird 1.5 o 2.0 ?

8.- No os canseis más que por ahora vais bien servidos con estas consultas, proximamente... más (cuando el cacao mental vaya "increchendo").


Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.
Responder Con Cita
  #2  
Antiguo 19-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 23
RONPABLO Va por buen camino
Cita:
1.- Como se le dice a una SP, qué indice (de todos los que tenga una BD) deseo utilizar para la consulta.
No entendi.

Cita:
2.- En el "for select ..... do" de una SP se supone que me recoje una serie de registros, pues bien, esos registros ¿como los muestro en un grid o en una stringlist o en dbgrid (esto creo que va a ser que no si no quiero usar MDOTable)? ya que no deseo utilizar el componente MDOTable (porque supongo que tendria el mismo problema de lentitud que con paradox).
El for select no solo es para recojer datos... tambien puede srivir para hacer cambios en la bd, por eso cuando un SP es para mostrar muchos registros dentro del for select se debe de poner suspend, algo asi:


Código SQL [-]
   for select c1, c2, c3 from tabla into :c1, :c2, :c3 do
   begin
      suspend;
   end
el caso anterior es para cuando necesitas mostrar algo, recuerda que los parametros :c1, :c2, :c3 deben de ser parametros de salida, y el siguiente para hacer una modificacion... en este no debe de ir suspend y los parametros pueden ser variables internas o parametros de salida, pero solo tendran el valor del ultimo registro del for select;
Código SQL [-]
   for select c1, c2, c3 from tabla into :c1, :c2, :c3 do
    begin
       inserte into tabla2 (c1, c2, c3) values (:c1, :c2, :c3);
    end


3.- Perdonad por mi ignorancia pero.... ¿se puede manejar el resultado de la consulta de una SP (con su for select...do) en un MDOTQuery?.

si se puede de la siguiente forma:

Código SQL [-]
 
select from sp_For_Select(:Parametros, eEntrada)

y el resultado seria un dataSet con los parametros de salida (en mi ejemplo anterior :c1, :c2, :c3)

Cita:
4.- Si la aplicacion que voy a hacer tiene que correr tanto en monopuesto o en red (al usuario se le da la opcion de elegir una de las dos, nunca las dos a la vez) ¿como tengo que crear la BD con el EMS o con el IBExpert, en local o en remote?.
yo lo que hago es crear un archivo de configuracion donde coloco el servidor (siempre uso un servidor) asi pues cuando quiero que se conecte localmente el servidor es localhost o 127.0.0.1 y ya.

Cita:
5.- Al hacer el traspaso de las tablas paradox a firebird con el InterbaseDataPump me dice que la BD está en "ForceWrite" y que el proceso tardará 3 veces más. Eso ¿qué es?, ¿Influirá esa caracteristica en la velocidad o lentitud de la aplicación?. ¿Cómo se puede cambiar esa caracteristica?.
no he consultado mucho sobre el ForceWrite, pero la demora es solo en el trspaso de informacion.

Cita:
6.- Vuelvo a insistir, perdonad por mi ignorancia, pero ahora mismo tengo un cacao de nuevos conceptos y adecuar mi forma de pensar (en programacion) a esos nuevos conceptos que a muchos no llego. He visto que en algunas SP hay al final unas lineas GRANT, ¿eso que es?, ¿Cual es su finalidad?. ¿No basta con llamarlas desde las MDOStoredProc sin esas lineas al final?.
la instrucción GRANT da permisos de diversos tipo a diferentes usuarios o roles de la base de datos sobre diferentes tablas, vistas, procedimientos almacenados.

Recuerda que si vas a ejecutar un sp que inserte, modifique o borre debes de usar los MDOStoredProc o MDOQuery.Execute y si quieres que te traigan resultados se debe de hacer por medio de un MDOQuery
Responder Con Cita
  #3  
Antiguo 19-03-2007
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 23
llonigualker Va por buen camino
Vamos a ver si me explico mejor para los puntos que no se han quedado claros o no los he entendido.

Punto 1.- En una BD yo puedo tener varios indices de una misma tabla para que en el tema de consultas sea mas rapido. Si consulto una cosa me interesaria utilizar un indice y si consulto otra, pues me interesaria utilizar otro indice. Pues bien, como se le puede indicar eso (si es posible) en una SP?.

Punto 2.- Ya tenia mas o menos claro lo de el for select...do y el suspend, mi pregunta era (para no utilizar MDOTtable) que una vez hecha la consulta con una MDOStoredProc, como recorro el conjunto de registros resultante y con que componente se pueden mostrar graficamente.

Por ahora esas son mis dudas, seguiremos informando. Ah, por cierto, con el Firebird vienen unos ejemplos, pero son muy basicos, alguien sabe de alguna aplicacion con sus fuentes algo mas elaborada que utilice los MDO para estudiarla? (creo que es la mejor manera de aprender).

Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.

Última edición por llonigualker fecha: 19-03-2007 a las 08:31:08.
Responder Con Cita
  #4  
Antiguo 19-03-2007
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 23
RONPABLO Va por buen camino
Cita:
Punto 1.- En una BD yo puedo tener varios indices de una misma tabla para que en el tema de consultas sea mas rapido. Si consulto una cosa me interesaria utilizar un indice y si consulto otra, pues me interesaria utilizar otro indice. Pues bien, como se le puede indicar eso (si es posible) en una SP?.

digamos hay una tabla llamada tabla con los campos c1, c2, c3 y c4 de los cuales los campos c1 y c2 están indexados.

Código SQL [-]
begin
    for select c3,  c4  from tabla where
         ((c1 = :c1) or :c1 is null)) and ((c2 = :c2) or (:c2 is null))
         into :c3, :c4 do
         begin
            suspend;
         end
end

como tal en el ejemplo anterior es buscar por un indice y/o por el otro, en es ejemplo la idea es que :c1, :c2 son parámetros de entrada y :c3, :c4 parámetros de salida, con los parámetros de entra yo puedo decidir por cual de los dos buscar, por decir algo si quiero solo buscar lo que hay en el campo indexado c1 mando un valor que se debe encontrar en dicho campo por medio del parámetro :c1 y mando un null en el parámetro :c2 y al revés si quiero buscar por el campo indexado c2 (espero sea esto lo que busques)

Cita:
Punto 2.- Ya tenia mas o menos claro lo de el for select...do y el suspend, mi pregunta era (para no utilizar MDOTtable) que una vez hecha la consulta con una MDOStoredProc, como recorro el conjunto de registros resultante y con que componente se pueden mostrar gráficamente.
como tal el MDOTQuery, MDOTtable y el MDOTDataSet son DataSets que se pueden asociar a un DataSource y este a un DBGrind por decir algo, entonces puedes usar un MDOTQuery para retornar informacion. para consultar datos no debes de usar el MDOStoredProc, estos son para el tipo de sp que solo hacen cambios (Deletes, Update e Insrts)

Código Delphi [-]
    MDOTQuery.sql := 'select * from sp(:c1,:c2);'
    MDOTQuery.ParamByName('c1').asInteger := var1;
    MDOTQuery.ParamByName('c2').asInteger := var2;
    MDOTQuery.Open;

y si esta bien enlazado a un dbGrid se vera los campos c3 y c4 en el dbGrid
Responder Con Cita
  #5  
Antiguo 19-03-2007
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 23
llonigualker Va por buen camino
Gracias, seguiré probando e investigando.

Otro dia, mas.

Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.
Responder Con Cita
  #6  
Antiguo 19-03-2007
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 23
llonigualker Va por buen camino
He tardado poco.

Me ha surgido una duda, estoy definiendo en una tabla un campo blob de texto (subtipe 1) pero no se que juego de caracteres asignarle, si el win1252 o el iso8859_1. Es para pasar el contenido de un campo memo de texto (con sus acentos y todo) de una tabla paradox a esta nueva tabla.

¿Cual debo de utilizar?

Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.
Responder Con Cita
  #7  
Antiguo 19-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
En España, yo estoy usando el ISO con COLLATE ES_ES, así permite eñes y acentos sin problemas en la BD.

Por lo visto en Firebird 2.0 hay un collate (cotejamiento) que permite hacer búsquedas independientemente de los acentos y mayúsculas, tendrías que mirar la documentación.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
TRANSFORMAR PROGRAMA paradox a firebird rickymarti Firebird e Interbase 11 10-02-2008 11:56:17
Paradox a Firebird Vlady Conexión con bases de datos 2 22-11-2006 21:05:19
De Paradox a Firebird morta71 Firebird e Interbase 5 05-10-2006 20:31:24
Pasar Tabla de Paradox a Firebird JoanKa Firebird e Interbase 4 12-02-2005 02:57:54
exportar una tabla de oracle 9i a paradox o firebird ARCON Oracle 1 28-10-2004 10:38:22


La franja horaria es GMT +2. Ahora son las 21:22:18.


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