PDA

Ver la Versión Completa : Resultado de un Execute con DBxpress


cesarsoftware
20-03-2013, 11:42:40
Buenos dias, ha ver si me podeis hechar una mano.

Como en cualquier programa, se usan sentencias sql para trabajar con firebird, por ejemplo

function TFormBBDD.CreaTabla(tabla, sql: string): boolean;
var
resultado: boolean;
begin
Result := False;
if BBDDconectadoBase = False then
Exit;
if ExisteTabla(tabla) = True then
Exit;
try
SQLConnection.ExecuteDirect(sql);
BBDDstringMonitor := 'BBDD-Tabla ' + tabla + ' creada';
MonitorBBDD(BBDDstringMonitor);
resultado := True;
except
on E: Exception do
begin
resultado := False;
BBDDstringMonitor := 'BBDD-No se ha creado o alterado la tabla ' + tabla +
'. Error SQL' + #13 + #10 + E.Message;
Application.MessageBox(PChar(BBDDstringMonitor), 'Atencion', MB_OK);
MonitorBBDD(BBDDstringMonitor);
end;
end;
Result := resultado;
end;

Cuando se genera un error en la sentencia, except me devuelve el error y tal, pero, si por ejemplo la sentencia sql es
'UPDATE CIUDADES SET ALCALDE='MALO' WHERE SUELDO>10000'
¿Como se cuantas filas se ven afectadas? parece que hay un componente TSQLDataSet.ExecSQL que devuelve el resultado sobre el numero de filas afectadas, pero no encuetro la solucion usando DBxExpres (dbxfb4d14.dll y fbclient.dll)

¿Alguna idea?

Gracias

Neftali [Germán.Estévez]
20-03-2013, 12:10:45
Siempre puedes lanzar la sentencia equivalente para contar, antes del UPDATE (con el mismo WHERE):


SELECT COUNT(clave_primaria) AS CUENTOS WHERE SUELDO>10000

cesarsoftware
20-03-2013, 12:20:31
Si, es un buen truco, pero a la pregunta formulada no hay respuesta, es decir dbxexpress no devuelve un resultado salvo en

FormBBDD.SQLConnection.Execute(sql, nil, @DataSet);


Por preguntar ¿eh?:D

Pero, ¿Que pasa si la sentencia sql viene de un campo TMemo?
Vamos, lo que he hecho ha sido porner un TMemo y un boton, entonces queda

procedure TFormConfTablas.BotonSQLClick(Sender: TObject);
var
sql, msg: string;
begin
sql := MemoSQL.Text;
try
FormBBDD.SQLConnection.ExecuteDirect(sql)
except
on E: Exception do
begin
msg := E.Message;
Application.MessageBox(PChar(msg), 'Atencion', MB_ICONERROR);
end;
end;
end;

En realidad no se que sentencia voy a escribir, esto lo hago para borrar registro "sucios", etc.

Neftali [Germán.Estévez]
20-03-2013, 13:03:02
Supongo que en ese caso dependería de si el SGBD devuelve esa información y si los componentes permiten recuperarla.
Siento no poder ayudarte más.

cesarsoftware
20-03-2013, 13:36:44
Gracias neftali, creo que los componentes dbxpress no devuelven nada, segun lo que leido en los manuales, por eso preguntaba, sniff:(

ozsWizzard
20-03-2013, 13:48:08
Otra opción es hacerlo todo por procedimientos almacenados, y que estos procedimientos tengan un parámetro de salida con el resultado

Por dar "soluciones" que no quede :P

cesarsoftware
20-03-2013, 13:50:09
Me has "pillado", y eso ¿como se hace ozswizzard?

ozsWizzard
20-03-2013, 13:56:54
La verdad es que no he pensado muy bien mi mensaje anterior, estaba en plan coña pero me imagino lo siguiente:

Los motores de bases de datos más usados y con cierta base para plantear lo que se quiere hacer (sql server, mysql, firebird, oracle, etc) sueles tener una ejecución de sentencias por variable de tipo cadena, es decir, una cosa así:

Exec_Sql "update tabla where (condición)"


Y, seguramente, desde el propio motor debe ser relativamente fácil saber que devuelve esa ejecución.

Esa es la idea gorsso modo

cesarsoftware
20-03-2013, 14:01:08
Ese es el problema, que no se como recuperar esa informacion de estado.

fjcg02
20-03-2013, 14:31:24
Mira a ver si te vale este enlace, en lo que respecta a row_count

http://www.firebirdmanual.com/firebird/es/firebird-manual/2/funciones-firebird/40

Puedes preparar un procedimeinto almacenado que te devuelva el nº de registros afectados.

Seguramente puedas hacerlo desde el excute script añadiendole la sentencia que devuelve el nº de registros afectados.

Un saludo

ROW_COUNT


DESCRIPCION:La variable de contexto ROW_COUNT contiene el número de filas afectadas por la declaración más reciente DML (INSERT, UPDATE, DELETE, SELECT o FETCH) en el gatillo actual, el procedimiento almacenado o bloque de ejecución.
TIPO RESULTADO: INTEGER
EJEMPLO:
update Figures set Number = 0 where id = :id; if (row_count = 0) then insert into Figures (id, Number) values (:id, 0);
FUNCIONAL EN: PSQL
AGREGADA EN: Versión Firebird 1.5
MODIFICADA EN: Versión Firebird 2.0

Casimiro Notevi
20-03-2013, 14:43:30
A ver si leemos la documentación ;)

ROW_COUNT

Available in: PSQL
Added in: 1.5
Changed in: 2.0
Description: The ROW_COUNT context variable contains the number of rows affected by the most recent DML statement (INSERT, UPDATE, DELETE, SELECT or FETCH) in the current trigger, stored procedure or executable block.
Type: INTEGER
Example:
update Figures set Number = 0 where id = :id;
if (row_count = 0) then
insert into Figures (id, Number) values (:id, 0);
Behaviour with SELECT and FETCH:

After a singleton SELECT, ROW_COUNT is 1 if a data row was retrieved and 0 otherwise.
In a FOR SELECT loop, ROW_COUNT is incremented with every iteration (starting at 0 before the first).
After a FETCH from a cursor, ROW_COUNT is 1 if a data row was retrieved and 0 otherwise. Fetching more records from the same cursor does not increment ROW_COUNT beyond 1.
In Firebird 1.5.x, ROW_COUNT is 0 after any type of SELECT statement.

fjcg02
20-03-2013, 16:50:17
A ver si la ponen bien para que la leamos. ;)

Saludos

Casimiro Notevi
20-03-2013, 17:06:53
A ver si la ponen bien para que la leamos. ;)
Saludos

No había visto tu respuesta :confused:

fjcg02
20-03-2013, 17:27:54
PEnsaba que te referías a mi comentario, por eso he respondido. ;)

De todas maneras, el link que pongo es a la página oficial de Firebird, de ahí que me sorprenda que no esté toda la información que tú aportas. Es importante el matiz de los valores que devuelve row_num para ver que no le vale a nuestro amigo.

Saludos

Casimiro Notevi
20-03-2013, 17:39:41
La info es de aquí (http://www.firebirdsql.org/refdocs/langrefupd25-row_count.html).

Creo que puede usarlo mediante un "stored procedure"

cesarsoftware
20-03-2013, 17:48:35
Esto...., una cuestion a los espertos,

Cuando ejecutais una sentencia cualquiera en sql, os fiais siempre de que ha hecho lo que quereis, o teneis algun truco, quiero decir.

Si ejecuto SQLconnection.execute('SELECT * FROM CIUDADES', nil, @DataSet) en DataSet tengo el resultado de la consulta, aunque sea 0, pero
si ejectuto SQLconnection.executedirect('UPDATE CIUDADES SET ALCADE='MALO' WHEN SUELDO>10000'), ¿como sabeis que ha hecho algo o lo ha hecho bien?
yo suelo poner un try, except pero solo funciona cuando la setencia sql esta mal escrita, pero si esta bien y "no hay ningun alcalde malo" no me entero de que o no ha hecho nada o de que todos los alcaldes son malos.

Vale, si, podria hacer un count previo y otro posterior, pero, seguro que hay algo que resuelva esta cuestion:confused:

PD: LJM (Leete el Jodido Manual), ya si ya me he estudiado "parte" del manual y hasta tengo varios libros de sql, aunque, ¡os necesitooooo:D!

Casimiro Notevi
20-03-2013, 17:59:26
Porque lo hace bien, no hay duda, hace exactamente lo que se le dice.
Otra cosa distinta es que no haya hecho lo que tú esperabas, pero eso ya es fallo de uno.

cesarsoftware
20-03-2013, 18:15:15
Correcto casimiro, firebird es muy bueno, reconozco que no soy experto en sql, uso sql (bueno firebird) desde hace unos pocos años y siempre, siempre me he fiado de el y nunca me ha fallado.

Pero estaba hasta los webs de usar programas de terceros para ver el contenido de tablas, borrar registros "sucios", cambiar un valor para hacer unas pruebas, etc.
Asi que desde hace un par de proyectos incluyo un pequeño manejador de la tablas de la base de datos, donde puede añadir tablas, indices, campos, cambiar campos, etc. y ahora le he añadido ese memo para hacer cositas, tipo filtro para ver los registros pero solo de una fecha o borrar algo, etc. y es ahora cuando he visto que estaria bien si se pudiera tener ese "log" de resultado.

¿Como haceis vosotros? usais programas tipo IBQ u os lo "currais a pelo".

¿Por preguntar eh?:D

Casimiro Notevi
20-03-2013, 18:24:36
En todo caso, conectas con ibexpert o flamerobin... y listo. ¿Para qué complicarse la vida? :)

cesarsoftware
20-03-2013, 18:37:37
No me jo...:rolleyes: no me digas que me estoy complicando la vida usando dbxpress, era con el que empece (creo que por dephi 2005) despues de abandonar las tablas BDE y me costo encontrar la libreria para delphi 2010, porque creo, ya no me acuerdo, que en alguna version delphi se desprendio de los componentes dbxpress para atacar a interbase/firebird y me tuve que "buscar la vida" y encontrarlos "por ahi".

Si tuviera todo el tiempo del mundo...igual me leia todos los mensajes de las zonas de este foro y a lo mejor, encontraria el componente ideal, pero casi siempre es mejor usar lo que uno "domina", pero acepto sugerencia para cambiar.:D

Al González
20-03-2013, 18:49:11
Complicarse la vida por intentar crear un programa similar a IBExpert con el mismo propósito que los que usamos IBExpert: administrar nuestras bases de datos. Me parece que a eso se refiere Casimiro.

Por cierto, es biblioteca, no librería. Y "a ver", no "ha ver". ;)

cesarsoftware
20-03-2013, 19:08:53
Hola Al, no creo que hacer un formulario para crear tablas y campos sea complicarse la vida, eso esta bien, no se pretende hacer algo igual sino algo que me sirva mejor, mas rapido y en cualquier parte, y algo propio, algo mas controlado.
He echado un vistado a la pagina de HK software, tendre que mirarlo mas a fondo.

En cuanto a "libreria", bueno, pues esta bien que defiendas el termino correcto (es wikiopedia dice que lo correcto es biblioteca, pero que la RAE admite los dos), pero vas a tener que luchar mucho para quitarnos a todos la mania adquirida durante años y por muchas personas, es casi como queder que no adoptemos aglicismos que estan por todas partes, personalmente prefiero los terminos castellanos/españoles/latinos.

En cuanto "ha ver", Usted perdone;), tengo los dedos frios y a veces son mas rapidos que la vista.
Nota: no pongo acentos porque no quiero dejarme ninguno, y estoy perdiendo la constumbre de poner la primera mayuscula es nombre propios, si es que dejeneramos poco a poco...:D

Casimiro Notevi
20-03-2013, 19:13:36
Dbexpres está bien, quería decir lo que ha aclarado Al González, que no vale la pena hacer un programita para crear tablas, campos y esas cosas, salvo que sea eso lo que quieres hacer. Pero para mantener una base de datos es mejor usar algo que ya se sabe que funciona y está creado para ello.
Pero si lo haces por aprender, pues vale, está bien, por supuesto.

Por cierto, yo también soy de "biblioteca". Hace muuuuuuuchos años trabajé en una librería, de las que venden libros, y no era una biblioteca :D

Casimiro Notevi
20-03-2013, 19:14:47
Si tuviera todo el tiempo del mundo...
Por eso mismo no te vale la pena perder el tiempo creando la rueda :)

cesarsoftware
20-03-2013, 19:20:12
Dbexpres está bien, quería decir lo que ha aclarado Al González, que no vale la pena hacer un programita para crear tablas, campos y esas cosas, salvo que sea eso lo que quieres hacer. Pero para mantener una base de datos es mejor usar algo que ya se sabe que funciona y está creado para ello.
Pero si lo haces por aprender, pues vale, está bien, por supuesto.


No si por aprender no es, aunque tambien, son necesidades que le van surgiendo a uno, ya comento que uso para esos menesteres IBQ, pero la verdad no me gusta dejar programas de terceros en la instalaciones de los clientes, prefiero tenerlo "todo controlado;)" en mi aplicacion.

Casimiro Notevi
20-03-2013, 19:27:18
Lo que acostumbro a hacer es una opción donde se abre una ventanita y puedo ejecutar sentencias sql, aunque para los usuarios "listillos" suele ser más peligroso que un "primate con arma de fuego repetidora" :)

juanelo
20-03-2013, 19:32:30
Que tal,
Creo estan tratando de matar una mosca con un cañon:

TSQLQuery QDataset
if QDataset.RowsAffected > 0
....

cesarsoftware
20-03-2013, 19:32:38
Si que es peligroso, si, yo lo protejo con clave privada.
Pero, ¿no te interesa saber el resultado de la ejecucion por ejemplo de un DELETE?

Casimiro Notevi
20-03-2013, 19:37:42
Pero, ¿no te interesa saber el resultado de la ejecucion por ejemplo de un DELETE?
No.


:p
Desde que uso delphi+firebird (1998) nunca me ha hecho falta esas cosas :)

Casimiro Notevi
20-03-2013, 19:38:23
Que tal,
Creo estan tratando de matar una mosca con un cañon:

Código Delphi [-] (http://www.clubdelphi.com/foros/#)TSQLQuery QDataset if QDataset.RowsAffected > 0 ....



#:-)# Eso pasa por no leer la documentación.

cesarsoftware
20-03-2013, 19:48:28
Que tal,
Creo estan tratando de matar una mosca con un cañon:

Código Delphi [-] (http://www.clubdelphi.com/foros/#)TSQLQuery QDataset if QDataset.RowsAffected > 0 ....



No que va, solo queremos saber el resultado de una accion,:D

juanelo
20-03-2013, 19:52:29
No que va, solo queremos saber el resultado de una accion,:D
Ah bueno yo pensaba que andaban de cacería ... :rolleyes:

Al González
20-03-2013, 20:10:38
Eso es lo curioso. :)

Nuestro atolondrado amigo César ya había comentado algo sobre la alternativa de usar un componente TSQLXXX, que como todos los TSQLXXX nativos forman parte de dbExpress (o DBX), pero al parecer él no lo ve así:
¿Como se cuantas filas se ven afectadas? parece que hay un componente TSQLDataSet.ExecSQL que devuelve el resultado sobre el numero de filas afectadas, pero no encuetro la solucion usando DBxExpres (dbxfb4d14.dll y fbclient.dll)

Y es que la propiedad RowsAffected que juanelo atinadamente mencionó, viene a ser lo mismo que tomar el resultado devuelto por el método ExecSQL:
ExecSQL returns the number of rows affected by the executed command. This becomes the value of the RowsAffected property.

Saludos. :)

roman
20-03-2013, 20:14:44
No.


:p
Desde que uso delphi+firebird (1998) nunca me ha hecho falta esas cosas :)

Me da la impresión de que, quizá, estás malinterpretando la consulta. Vamos, es que me sorprende esta afirmación.

Claro que muy posiblemente no sea lo usual y es más para un software de administración de bases que para un sistema final, pero este tipo de resultados en ocasiones son bienvenidos. No pocas veces me ha sucedido estar actualizando algo y notar que no se afectó ninguna fila, lo que me lleva a darme cuenta de que algo andaba mal con mi código SQL, por dar un ejemplo.

// Saludos

Casimiro Notevi
20-03-2013, 20:22:00
Creo que sí lo había entendido bien :)
Nunca me ha hecho falta crear algo en mi programa para comprobar algo así, ya que en el momento de desarrollo y pruebas uso flamerobin/ibexpert.
Yo entiendo que cesarsoftware quiere tener una especie de ibexpert integrado en su programa, hecho por él mismo. Y eso es lo que digo que nunca me ha hecho falta.
:)

cesarsoftware
20-03-2013, 20:26:48
Eso es lo curioso. :)

Nuestro atolondrado amigo César ya había comentado algo sobre la alternativa de usar un componente TSQLXXX, que como todos los TSQLXXX nativos forman parte de dbExpress (o DBX), pero al parecer él no lo ve así:

Y es que la propiedad RowsAffected que juanelo atinadamente mencionó, viene a ser lo mismo que tomar el resultado devuelto por el método ExecSQL:

Saludos. :)

Al, no se si quieres que me mosquee contigo o que te ignore:mad:, al menos lo de "atolondrado" te lo podias guardar para ti, al igual que tus correcciones sobre "biblioteca" y "ha ver", si vas a aportar algo positivo sobre delphi hazlo, parece ser que no soy el unico que busca una respuesta en una pregunta.

Y la respuesta es esta, porque al menos procuro trabajar y buscar la solucion mientras converso en este post

procedure TFormConfTablas.BotonSQLClick(Sender: TObject);
var
sql, msg: string;
SQLQuery: TSQLQuery;
begin
BotonSQL.Enabled := False;
sql := MemoSQL.Text;
SQLQuery := TSQLQuery.Create(nil);
try
SQLQuery.SQLConnection := FormBBDD.SQLConnection;
SQLQuery.CommandText := sql;
SQLQuery.ExecSQL(True);
Application.MessageBox(PChar(IntToStr(SQLQuery.RowsAffected) +
' Filas afectadas'), PChar(String(NombrePC)), MB_OK);
except
on E: Exception do
begin
msg := E.Message;
Application.MessageBox(PChar(msg), 'Atencion', MB_ICONERROR);
end;
end;
SQLQuery.Free;
BotonSQL.Enabled := True;
end;

cesarsoftware
20-03-2013, 20:30:13
Ah bueno yo pensaba que andaban de cacería ... :rolleyes:

Gracias juanelo, ahi tenias la respuesta, el "problema" es que siempre he usado TSQLDataSet y no TSQLQuery, a partir de ahora igual cambio. Gracias de nuevo.

juanelo
20-03-2013, 20:32:09
Gracias juanelo, ahi tenias la respuesta, el "problema" es que siempre he usado TSQLDataSet y no TSQLQuery, a partir de ahora igual cambio. Gracias de nuevo.
Hombre me da gusto que no hayas tenido que montar el lanza cohetes, aunque veo que ganas no te faltan ... (broma) :D

ozsWizzard
20-03-2013, 20:37:50
Supongo que me meto donde no me llaman, Cesar, pero creo que Al en ningún momento tuvo intención de ofenderte. No sé de donde eres pero lo mismo en México la palabra "atolondrado" no tiene connotaciones tan negativas, o se ha expresado mal o pensaba que había puesto suficientes emoticonos como para que se entienda el buen rollo.

Sobre las correcciones, hay gente que tienen ciertas costumbres.

Lo mismo hablo de más, pero es la sensación que a mí me ha dado, que no iba con mala fe.

Un saludo

cesarsoftware
20-03-2013, 20:43:03
Me da la impresión de que, quizá, estás malinterpretando la consulta. Vamos, es que me sorprende esta afirmación.

Claro que muy posiblemente no sea lo usual y es más para un software de administración de bases que para un sistema final, pero este tipo de resultados en ocasiones son bienvenidos. No pocas veces me ha sucedido estar actualizando algo y notar que no se afectó ninguna fila, lo que me lleva a darme cuenta de que algo andaba mal con mi código SQL, por dar un ejemplo.

// Saludos

Roman, "lo normal" es no tener que hacer un mini "ibexpert" dentro de una aplicacion, si la base de datos esta predefinida, pero por la naturaleza de algunas aplicaciones, las bases de datos son dinamicas, por ejemplo, cuando un cliente compra un robot nuevo y lo asigna a mi aplicacion, se crean tablas para ese elemento y se pueden crear registros de toda naturaleza, sobre todo al principio y es mas comodo poder limpiar o borrar una tabla desde la propia aplicacion.
Con esta solucion siempre podemos saber las filas afectadas y con un except y E.message el resultado negativo a una consulta.
El saber no ocupa lugar, bueno unas pocas lineas de codigo:D

roman
20-03-2013, 20:43:24
Yo entiendo que cesarsoftware quiere tener una especie de ibexpert integrado en su programa, hecho por él mismo. Y eso es lo que digo que nunca me ha hecho falta.
:)

Eso lo entiendo y de hecho concuerdo, pero tu respuesta era a la pregunta

Pero, ¿no te interesa saber el resultado de la ejecucion por ejemplo de un DELETE?

y esa es la parte que me asombra :)

// Saludos

cesarsoftware
20-03-2013, 20:48:44
Supongo que me meto donde no me llaman, Cesar, pero creo que Al en ningún momento tuvo intención de ofenderte. No sé de donde eres pero lo mismo en México la palabra "atolondrado" no tiene connotaciones tan negativas, o se ha expresado mal o pensaba que había puesto suficientes emoticonos como para que se entienda el buen rollo.

Sobre las correcciones, hay gente que tienen ciertas costumbres.

Lo mismo hablo de más, pero es la sensación que a mí me ha dado, que no iba con mala fe.

Un saludo

Que va ozswizzard, quizas le he malinterpretado yo, pero en españa si le llamas a alguien atolondrado le estas llamando tonto, abobado o lelo, y como se suma al post anterior, pues eso, que yo no quiero malos rollos con nadie, todo lo contrario, pero si es cierto que me he enfadado un poco sobre todo porque me ha dado la sensacion de que corrige mi estilo de escribir o de expresarme en vez de aportar algo positivo, nada mas, repito que igual desconozco "su estilo", si es asi, pido perdon por enfadadarme un poco.:)

Casimiro Notevi
20-03-2013, 20:49:13
Lo mismo hablo de más, pero es la sensación que a mí me ha dado, que no iba con mala fe.

A mí me da la sensación de fraternal, afectuoso y cariñoso. Nada de mala fe.

cesarsoftware
20-03-2013, 20:51:58
Supongo que me meto donde no me llaman, Cesar, pero creo que Al en ningún momento tuvo intención de ofenderte. No sé de donde eres pero lo mismo en México la palabra "atolondrado" no tiene connotaciones tan negativas, o se ha expresado mal o pensaba que había puesto suficientes emoticonos como para que se entienda el buen rollo.

Sobre las correcciones, hay gente que tienen ciertas costumbres.

Lo mismo hablo de más, pero es la sensación que a mí me ha dado, que no iba con mala fe.

Un saludo

PD: si me he habia fijado en los emoticonos y no estaban dirigidos a mi, o esa impresion me ha dado.

cesarsoftware
20-03-2013, 20:56:29
A mí me da la sensación de fraternal, afectuoso y cariñoso. Nada de mala fe.

Sera que estoy espeso esta tarde:), intentare verlo desde esa perspectiva positiva.

roman
20-03-2013, 20:56:31
corrige mi estilo de escribir o de expresarme en vez de aportar algo positivo

Dese luego, cada cual ve las cosas distinto. Para mi, que me corrijan mis faltas de ortografía o en general, el uso del español, es algo positivo ;) Siempre y cuando, claro, se haga con la educación como la que muestra Al.

// Saludos

juanelo
20-03-2013, 20:58:53
Sera que estoy espeso esta tarde:), intentare verlo desde esa perspectiva positiva.
Pues con este mensaje creo se termina la polémica con Al, a darle vuelta a la página. ^\||/

Al González
20-03-2013, 20:59:40
César, disculpa, no iba con mal rollo ni nada por el estilo. :)

Después de un par de hilos donde hemos convivido sanamente, me tomé la libertad de escribir como se habla entre camaradas. Tal vez me pasé de confianzudo viéndote como veo por ejemplo a nuestros buenos amigos, Casimiro o Newtron. :o

Luego por estas malas interpretaciones se abren grietas en la tierra. :(

cesarsoftware
20-03-2013, 21:02:36
César, disculpa, no iba con mal rollo ni nada por el estilo. :)

Después de un par de hilos donde hemos convivido sanamente, me tomé la libertad de escribir como se habla entre camaradas. Tal vez me pasé de confianzudo viéndote como veo por ejemplo a nuestros buenos amigos, Casimiro o Newtron. :o

Luego por estas malas interpretaciones se abren grietas en la tierra. :(

Al, disculpas a ti tambien. Desde luego puedes verme como un amigo y compañero, pero te habras dado cuenta de que a cada cual le molestan cosas distintas.
Tomemos unas birras vituales, para todos invito yo||-||||-||

Por cierto, ¿a alguien le ha servido de ayuda saber el resultado del execute, porque tenia solucion?:D

juanelo
20-03-2013, 21:03:33
Por cierto, ¿a alguien le ha servido de ayuda saber el resultado del execute?:D
A mi sin lugar a dudas ! :p

cesarsoftware
20-03-2013, 21:16:28
Me voy a cenar, pero prometo que mañana publicare todo el codigo fuente del "mini ibxpert· por si a alguien le viene bien.

Al González
20-03-2013, 21:20:20
Tomemos unas birras vituales, para todos invito yo||-||||-||
Acepto con gusto, una León por favor. ||-|| Porque en Delphi todo tiene solución. ^\||/

[...] mañana publicare todo el codigo fuente del "mini ibxpert· por si a alguien le viene bien.
Celebro esa decisión. :)

Neftali [Germán.Estévez]
21-03-2013, 08:55:10
...pero prometo que mañana publicare todo el codigo fuente del "mini ibxpert· por si a alguien le viene bien.

^\||/

Gracias.

cesarsoftware
21-03-2013, 12:33:45
Buenos días, lo prometido es deuda

He tardado un par de horas en extraer los módulos para crear un programa que podais compilar, asi que le he tenido que quitar ciertar referencias a otros módulos pero que en principio para el uso que se le vais a dar es indiferente.

Tengo que destacar que he extraido los módulos de un proyecto para convertirlo en un programa independiente y he usado 2 botones que tenia para gestión de diccionarios para Abrir y Cerrar base de datos (no le he cambiado el nombre), estas las he puesto en 2 variables (servidor y database) y pregunta con inputbox por el servidor y base, no tengo que decir que esto es una chapucilla por extraer los modulos y que funcione independientemete como programa.

En el archivo adjunto están las unidades
Gfdb.dpr, Gfdb.dproj, Gdfb.res = > definición de proyecto Delphi 2010 (la .res no hace falta)
UnitConfTablas.pas, .dfm => formulario principal (ahora)
UnitVerTabla.pas, .dfm => formulario para ver contenido de una tabla
UnitGlobalSQL.pas => funciones para abrir y cerrar base de datos
FireBird.FDB => una base de datos vacia
dbxdrivers.ini => definición de conexion firebird

Hacen falta ademas, que no he incluido por temas de espacio
dbxfb4d14.dll => "LIBRERIA" DBXpress:D
fbclient.dll => "LIBRERIA" propia de firebird:D
Gddb.exe => el programa compilado y ejecutable

En otro post describire la funciones mas interesantes.

Neftali [Germán.Estévez]
21-03-2013, 13:10:07
¿Puedes subir las DLL's a otro servidor? ¿al FTP? ¿MEGA? ¿...?

cesarsoftware
21-03-2013, 13:33:35
He subido el proyecto entero al ftp del club como Gfdb.rar en varios, incluyendo las bibliotecas .dll
http://terawiki.clubdelphi.com/Varios/

En este video se ve como se usa el "mini ibexpert" tanto de donde a salido como independiente
http://www.youtube.com/watch?v=MvTeYOSnU0o&feature=youtu.be

Neftali [Germán.Estévez]
21-03-2013, 13:57:23
Ahora sí.
Gracias.

cesarsoftware
21-03-2013, 17:53:16
Buenas, queria explicar las funciones, pero me parece que puede ser "un manual" muy largo, asi que casi dejo que cada uno mire el codigo por su cuenta y si tiene alguna duda que pregunte, que para eso estamos:)

Un saludo

ozsWizzard
21-03-2013, 19:00:16
Muchísimas gracias!! ;)

ozsWizzard
21-03-2013, 19:10:52
Dato curioso

Siempre he querido hacerme un mini-administrador de sql (para select, updates, deletes, crear y borrar tablas y muy poquito más) donde poder "meter" varias bases de datos de distintos motores (sql server, firebird, mysql, oracle...). Con "meter" me refiero a tener la lista y conectarme a ellas a golpe de click.

Una vez que hay una parte del trabajo hecha... lo mismo me animo a hacerlo y, obviamente, os subiré el resultado. Ahora lo que molaría es tener tiempo, jejeje

Casimiro Notevi
21-03-2013, 19:33:21
Dato curioso
Siempre he querido hacerme un mini-administrador de sql (para select, updates, deletes, crear y borrar tablas y muy poquito más) donde poder "meter" varias bases de datos de distintos motores (sql server, firebird, mysql, oracle...). Con "meter" me refiero a tener la lista y conectarme a ellas a golpe de click.
Una vez que hay una parte del trabajo hecha... lo mismo me animo a hacerlo y, obviamente, os subiré el resultado. Ahora lo que molaría es tener tiempo, jejeje
¡Quién sabe!, lo mismo de esta sale el "fbexperto" :)

cesarsoftware
21-03-2013, 20:16:52
Pregunta tonta sin mala intencion (tonta porque no he mirado)
¿En sourceforge o sitios similares no habra ya un "fbexperto"?:rolleyes:

ozsWizzard
22-03-2013, 11:18:57
Fb, no sé (entiendo que el fb es por firebird) pero lo que yo busco, que sería más bien un "BDDExperto", no lo hay, ni siquiera lo he visto de pago. Toad tiene varias herramientas pero cada programa vale un pastizal y son para motores distinto de base de datos.

cesarsoftware
22-03-2013, 11:29:26
Pues ya sabes ozswizzard, tienes la base.

Esperamos tus noticias :D

PD: Yo solo trabajo con Firebird, pero seguro que me tocara trabajar con otras bases de datos, asi que esa informacion puede venirme pero que muy bien.