![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#2
|
|||
|
|||
|
Hola. No en XP y anteriores. En Windows 7 y en WS2008, realmente es c:\Program Files y para cada idioma se mapea a c:\Archivos de programa o el que sea en otros idiomas. Más o menos eso me parece, no soy ningún experto en Windows.
Realmente el sistema operativo entiende c:\Program Files, porque de hecho cuando se instala la aplicación te pone c:\Program Files\Firebird\Firebird_1_5 y no C:\Archivos de Programa\Firebird\Firebird_1_5 como ocurría en XP o anteriores. Quizás algún experto en WS2K8 pueda ilustrarnos sobre ello, pero lo que si te aseguro que ha sido cambiar eso y ya funcionaba el 1.5.6. por otra parte, estoy preparando un ejemplo de lo del drop table para ver si tiene solución, ya que salió en el hilo. Un saludo. |
|
#3
|
||||
|
||||
|
Cita:
Si sobre el servidor accedo en local como C:\Program Files\Prog\Datos.dat, entonces los clientes no pueden conectar como servidor:C:\Archivos de Programa\Prog\Datos.dat. Todas las máquinas tienen que conectar usando Program Files, o bien Archivos de Programa (que es un symlink a Program Files), pero no se pueden mezclar. ¿ Seguro que te preguntas porqué hago una cosa tan estúpida ?. Es una herencia del proceso de instalación que creé cuando solo existía "Archivos de Programa". La instalación en los clientes me deja la cadena de conexión en "C:\Archivos de Programa" que es el valor que usaba por defecto en Windows 95/98/ME/XP/... (si uso otra carpeta del servidor, tengo que modificar el ini manualmente). En cambio en el Servidor, como el instalador sabe perfectamente la carpeta donde se realiza la instalación, modifica la cadena de conexión (y la deja en Program Files). En definitiva, que para evitar estos problemas (y no hacer chapuzas en la instalación de que si el S.O. es uno utilizo una cadena por defecto, y otro, otra cadena), lo que he terminado haciendo es no utilizando para nada la carpeta "Archivos de Programa", y a partir de ahora colgar directamente mis programas de una subcarpeta en la raíz (con lo que también me ahorro muchos problemas de restricciones por seguridad que Vista/7 añaden a lo que se encuentra en Archivos de Programa).
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#4
|
||||
|
||||
|
Esas cosas no me pasan porque siempre uso servidores linux
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#5
|
|||
|
|||
|
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. |
|
#6
|
|||
|
|||
|
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. |
|
#7
|
||||
|
||||
|
¿ 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). |
|
#8
|
||||
|
||||
|
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). |
|
#9
|
|||
|
|||
|
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... |
|
#10
|
||||
|
||||
|
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). |
|
#11
|
|||
|
|||
|
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... |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|