Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Resultado de un Execute con DBxpress (https://www.clubdelphi.com/foros/showthread.php?t=82574)

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 Noteví 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 Noteví 20-03-2013 19:14:47

Cita:

Empezado por cesarsoftware (Mensaje 457205)
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

Cita:

Empezado por Casimiro Notevi (Mensaje 457209)
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 Noteví 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:

Código Delphi [-]
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 Noteví 20-03-2013 19:37:42

Cita:

Empezado por cesarsoftware (Mensaje 457215)
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 Noteví 20-03-2013 19:38:23

Cita:

Empezado por juanelo (Mensaje 457214)
Que tal,
Creo estan tratando de matar una mosca con un cañon:

Código Delphi [-]TSQLQuery QDataset if QDataset.RowsAffected > 0 ....

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

cesarsoftware 20-03-2013 19:48:28

Cita:

Empezado por juanelo (Mensaje 457214)
Que tal,
Creo estan tratando de matar una mosca con un cañon:

Código Delphi [-]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

Cita:

Empezado por cesarsoftware (Mensaje 457219)
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í:
Cita:

Empezado por cesarsoftware (Mensaje 457165)
¿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:
Cita:

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

Cita:

Empezado por Casimiro Notevi (Mensaje 457216)
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 Noteví 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

Cita:

Empezado por Al González (Mensaje 457221)
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
Código Delphi [-]
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

Cita:

Empezado por juanelo (Mensaje 457220)
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

Cita:

Empezado por cesarsoftware (Mensaje 457227)
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

Cita:

Empezado por roman (Mensaje 457222)
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


La franja horaria es GMT +2. Ahora son las 22:23:43.

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