![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Muchas gracias.
Pues al lio me pongo, mientras esperaba respuestas he estado viendo un post en el que caral explicaba la instalacion y conexion basica con firebird. Una ultima question, en el equipo donde tendria que ir instalado el servidor, tengo un MS SQL SERVER 2005 corriendo para una aplicacion externa de uso de mi trabajo. Puedo instalar firebird sin ningun tipo de conflicto con MS SQL SERVER? tendre problema con los puertos o algo parecido? Es que para probar que gane en rendimiento puedo instalar firebird en mi equipo local pero luego tendre que usarlo para todos los usuarios en el servidor, y no quiero migrar toda la bd y luego tener problemas de incompatibilidades. Preguntareis porque no uso MS SQL SERVER en vez de firebird, posiblemente porque firebird es del que he recibido respuesta optima para mejor mi rendimiento y ademas visitando el foro antes de preguntar he observado que era el mas usado por aqui. Gracias |
|
#2
|
||||
|
||||
|
Hola juanlito.
Cita:
Pero en principio, creo que no habría problemas ya que por defecto Firebird usa el puerto 3050 y leí por ahí que MS SQL Server el 1433. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 17-08-2011 a las 14:15:08. |
|
#3
|
|||
|
|||
|
Muchas Gracias a todos por vuestras respuestas, ya consegui conectar con la base de datos de firebird, y importe tambien los datos sin problema.
Pero mi consulta sigue siendo lenta, se que usaba componentes tipo TTable y TQuery, y con esos componentes el resultado seria muy parecido con ambas bases de datos. No se si para preguntar como solucionar esto tengo que abrir otro hilo, o puedo hacerlo en este mismo, voy a ponerlo aqui y si hay que cambiarlo me lo comentais y creo uno nuevo donde corresponda. Aqui explicare un poco mas mi problema, tengo que unir los campos de 2 tablas en otra resultante, uniendo solo los campos necesarios, el unico gran problema es que el tipo de dato de una de las tablas es string y en la tabla resultante tiene que ser un timestamp(esto es necesario para siguientes consultas y funcionar correctamente con el valor), he probado con un stored procedure para que fuese el servidor firebird el que hiciese la conversion pero al invocar despues el stored procedure desde delphi me da un error, creo que con el dialect de la base de datos, aunque no estoy seguro. Tambien he estado viendo por la documentacion que me aporto ecfisa que un stored procedure puedo ejecutarlo desde un IBSQL, pero no he entendido como se hace, por eso he usado el IBstoredproc. A continuacion pongo el codigo del stored procedure por si hay alguien que ve algo mal, posiblemente con la funcion de conversion de string a timestamp. El error que me da al ejecutar es : Project compara.exe raised exception class EIBInterBaseError with message 'conversion error from string "20/06/2011 19:37:17" -sql_dialect set database dialect n' El codigo Código:
CREATE OR ALTER PROCEDURE INSERTAR
as
declare variable dn varchar(255);
declare variable sc double precision;
declare variable dt varchar(255);
declare variable st varchar(255);
declare variable cad varchar(255);
declare variable t timestamp;
declare variable rt timestamp;
declare variable ad varchar(255);
declare variable tn varchar(255);
begin
/* Procedure Text */
FOR SELECT PHONE.TELNO AS TELNO, PHONE.ADDRESS AS ADDRESS, TAG26.RPTIME AS RPTIME, TAG26.STARTTIME AS STARTTIME, TAG26.DURATTIME AS DURATIME, TAG26.SUMCOIN AS SUMCOIN, TAG26.DIALNO AS DIALNO
FROM PHONE, TAG26
WHERE PHONE.IDNO = TAG26.IDNO
INTO :TN, :AD, :RT, :ST, :DT, :SC, :DN DO
begin
CAD = substring(:st from 7 for 2) || '/' || substring(:ST from 5 for 2) || '/' || substring(:st from 1 for 4) || ' ' || substring(:st from 9 for 2) || ':' || substring(:st from 11 for 2) || ':' || substring(:ST from 13 for 2);
T = cast (cad as timestamp) ;
end
INSERT INTO tic(TELNO, ADDRESS, RPTIME, STARTTIME, DURATIME, SUMCOIN, DIALNO)
VALUES (:TN, :AD, :RT, :T, :DT, :SC, :DN);
suspend;
end^
Última edición por juanlito fecha: 23-08-2011 a las 13:03:01. |
|
#4
|
||||
|
||||
|
A bote pronto, parece que el formato que traga es MM/DD/YYYY HH:MM:SS
y tu le estás pasando DD/MM/YYYY HH:MM:SS Prueba a ver cambiando el orden. por otro lado, no puedes hacer el cast de string timestamp directamente ? Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#5
|
|||
|
|||
|
Muchas gracias fjcg02
Acertaste de pleno con el problema, es que como yo ya tenia las consultas hechas y sobre access me iban bien pues no pense que el formato de la fecha me cambiase ahora, pero por lo visto he de tener mas cuidado. Al igual que dije con la consulta anterior, si este hilo ya ha perdido su razon de ser y tengo que abrir otro me lo comentais y lo hago, pero mientras tanto sigo aqui porque en realidad es todo sobre lo mismo,(o al menos asi lo creo) Sigo modificando todo mi codigo para que me funcione con firebird en vez de access y me he encontrado otro problema, tengo una consulta algo compleja (la terminaba con codigo en delphi sacando datos de varios querys ) que he decidido hacerla con un otro SP (le estoy cogiendo el gustito) pero me da error, a continuacion voy a poner el codigo y explicar lo que quiero que haga, quizas este mal pero viendo otros hilos en el foro he creido que era la forma adecuada.
tengo 2 tablas, guan y plat, tengo que comparar si todos los registros de guan se encuentra en plat, y mostrar los que no se encuentren, hasta ahi todo simple, el problema es que tengo que modificar un campo de guan para que coincida con plat (siempre tienen la misma diferencia) y luego quiero que esos registros seo se produzca casi en la misma fecha y hora, he usado un intervalo de 2 horas arriba - 2 horas abajo. como el SP me devuelve solo un registro, luego uso un IBquery con sql: select * from COMP_GUAN_PLATA , para que me muestre todos los registros resultantes. Me da un error cuando lo ejecuto en el IBExpert. diciendo: "multiples rows in singleton select", esto sera debido porque puede darse el caso de que en el intervalo que uso de 4 horas pueda repetirse el registro, pero a mi solo me interesa que no se de nunca, si se da una o varias me da igual, no se mostraria en ninguno de los 2 casos, solo cuando no exista. Espero despues de este parrafon haberme explicado con claridad. Gracias |
|
#6
|
||||
|
||||
Cambia estas sentencia por
Preguntas cuantos registros cumplen, y ya está. Tengo la duda de que si no hay registros te devuelve null o 0. Compruebalo y nos cuentas. No puedes devolver en una variable varios valores, que es lo que ocurre cuando hay más de un registro. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#7
|
|||
|
|||
|
Muchas Gracias,
Creo que me funciona, he tenido que poner IF (:LINEA = 0) y quitar la linea EXIT (realmente no se porque, ni porque la he quitado ni porque tenia que ir), en este caso el IBExpert me muestra los datos, pero me muestra muchas lineas con null, con lo cual he intentado en mi apliacion no mostrarlo,en vez de usar el codigo para el IBQUERY:
uso
Con esto me muestra los datos, creo que correctos, pero el problema es que tanto en el IBExpert, como en el Grid que tengo enlazado al IBQuery, cuando intento moverme por los registros necesitan segundos para refrescar, en el grid me va algo mejor que en el IBExpert, hay alguna forma de mejorar esto. Podria alguien explicarme porque no he tenido que usar el EXIT? o en que casos se suele usar.( esto no es que me haga falta para mi codigo ahora, sino por aprender para un futuro, para entenderlo mejor) Creo que ya con esto ya podre migrar la aplicacion entera, tengo mucho mas codigo que cambiar pero casi todo es consultas bastante similares a esta ultima. Muchisimas gracias a todos y a ver si voy mejorando para poder yo tambien colaborar ayudando a otros. |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Optimización! Optimización! | PiornoCKA&G | Varios | 1 | 31-12-2006 20:45:30 |
| Optimización Rendimiento dB | amesoft | SQL | 1 | 05-08-2006 06:26:37 |
| optimizacion del SQL | seb@ | SQL | 1 | 22-09-2004 19:55:24 |
| Optimizacion | manuelpr | Conexión con bases de datos | 3 | 30-07-2004 17:26:24 |
| Rendimiento y optimizacion de una aplicacion | erickperez6 | Varios | 2 | 10-09-2003 01:12:32 |
|