FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Esas cosas no me pasan porque siempre uso servidores linux
|
#2
|
|||
|
|||
je je .. uno de mi opinión ... a mi me pasa igual .. siempre que puedo servidor linux ...
pero hay clientes que se "encasquetan" con el güindous. |
#3
|
|||
|
|||
Bueno, el tema del borrado de la tabla. No sé si debería ir en otro hilo, pero bueno, como salió aquí, pues a ver si Donald puede ayudarme, o algún otro compañero. Es un ejemplo sencillo sin controles de errores ni similar. Es para que lo veáis.
Coloco en la pantalla 5 botones: button1 --> conectar con la Bd button5 --> desconectar de la bd button3 --> crear un tabla y commit button2 --> ejecutar proceso de inserts y commit button4 --> borrar la tabla creada commit Un label1 para poner un texto. En pantalla los componentes fibplus: FIBdatabase para conectar con la BD una pareja fibtransaction1/fibquery1 otra pareja fibtransaction2/fibquery2 Código:
procedure TForm1.Button1Click(Sender: TObject); begin pFIBDatabase1.Connected:=true; end; procedure TForm1.Button5Click(Sender: TObject); begin pFIBDatabase1.Connected:=false; end; procedure TForm1.pFIBDatabase1AfterConnect(Sender: TObject); begin label1.caption:='Conectada'; end; procedure TForm1.pFIBDatabase1AfterDisconnect(Sender: TObject); begin label1.caption:='Desconectado'; end; procedure TForm1.Button2Click(Sender: TObject); var i:integer; begin pFIBTransaction2.StartTransaction; with pFIBQuery2 do begin close; sql.clear; sql.add('INSERT INTO TMPPRUEBA( C1, C2) VALUES (:c1, :c2)'); Prepare; for i:=1 to 100 do begin ParamByName('c1').value:=i; ParamByName('c2').value:=i; ExecQuery; end; close; end; pFIBTransaction2.Commit; showmessage('Terminado'); end; procedure TForm1.Button3Click(Sender: TObject); begin pFIBTransaction1.StartTransaction; with pFIBQuery1 do begin close; sql.clear; sql.Add('CREATE TABLE TMPPRUEBA ( C1 INTEGER, C2 INTEGER )'); ExecQuery; end; pFIBTransaction1.Commit; end; procedure TForm1.Button4Click(Sender: TObject); begin pFIBTransaction1.StartTransaction; with pFIBQuery1 do begin close; sql.clear; sql.Add('DROP TABLE TMPPRUEBA '); ExecQuery; end; pFIBTransaction1.Commit; end; Si el servidor es 1.5, funciona bien. Si es 2.x al borrar la tabla da un error de "object metadata in use". Todo tiene sus commits correspondientes. En 2.x, después de crear y ejectuar, si desconecto de la bd y vuelvo a conectar ya puedo borrarla. Un saludo. |
#4
|
||||
|
||||
¿ Utilizas la última versión disponible de Firebird 2.1 (2.1.3) ?. Parece claro que la tabla queda bloqueada más allá del tiempo durante el que realizas la transacción (y solo se desbloquea al desconectar la base de datos).
Normalmente estos problemas los suelen solventar en las actualizaciones de cada nueva versión de Firebird.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#5
|
||||
|
||||
Yo no puedo hacerlo, mi programa lo pongo en tiendas, y lo normal es que haya dos, tres ordenadores de promedio.
Utilizan uno de los ordenadores como servidor y cliente a la vez. No puedo decirles que añadan un servidor Linux dedicado, así que me toca lidiar con Windows y sus tonterías.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#6
|
|||
|
|||
Hola...
Sobre el detalle de las rutas especiales en Windows, el mismo S.O. ofrece funciones para saber cuales son esas rutas. La mayoría de los generadores de instaladores son capaces de obtener esas rutas no importa que versión de Windows es y desde tus aplicaciones de delphi solo necesitas usar las funciones del API. Busquen información sobre la función: SHGetSpecialFolderPath, a mi me ha evitado muchos dolores de cabeza... Saludos... |
#7
|
||||
|
||||
Cita:
Así que una buena solución es ahora evitar del todo la carpeta \Archivos de Programa. NOTA: Bueno, en realidad la mejor solución es utilizar un Alias de Firebird y así no tienes que poner ningún tipo de ruta.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#8
|
|||
|
|||
Hola...
Pues desde el mismo instalador puedes editar el archivo .ini y usas la ruta donde se instaló tu aplicación... yo lo hago así desde Inno Setup... Saludos... |
#9
|
||||
|
||||
Alias
Cita:
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#10
|
||||
|
||||
Cita:
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#11
|
||||
|
||||
Hola.
Cita:
No puedes hacer esto, porqué como ya he dicho esto solo funciona cuando haces la instalación en el Servidor. Cuando haces la instalación en el Servidor, el Instalador sabe perfectamente en que carpeta se deja la base de datos, y puede cambiar el ini donde se guarda la cadena de conexión. Esto funciona muy bien. Pero cuando haces la instalación en el cliente, el Instalador no tiene ninguna forma de saber en que carpeta se ha dejado la base de datos en el Servidor (un día de estos tengo que empezar a utilizar Alias de Firebird, y olvidarme de las rutas a la carpeta donde se guarda la base datos).
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). Última edición por guillotmarc fecha: 20-05-2010 a las 11:27:26. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Dlephi 6 - Windows 7 - SQL Server 2008 | andresu723 | MS SQL Server | 0 | 14-04-2010 16:33:50 |
Instalacion de Servicio Windows Server 2008 | genius | Varios | 2 | 27-12-2009 23:44:04 |
Problema DBExpress en Windows Server 2008 | cmagno | Conexión con bases de datos | 0 | 12-02-2009 14:39:11 |
firebird y .net 2008 | voldemmor | .NET | 0 | 27-11-2008 17:15:54 |
No más Windows XP a partir de 2008 | kinobi | Noticias | 15 | 17-04-2007 19:57:13 |
|