Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   La Taberna (https://www.clubdelphi.com/foros/forumdisplay.php?f=40)
-   -   Biolab 1.0 (https://www.clubdelphi.com/foros/showthread.php?t=75272)

Chris 11-08-2011 21:45:21

Muchas gracias ecfisa! te lo agradezco muchísimo. Ya estoy analizando el informe :)

Saludos,
Chris

Chris 12-08-2011 06:14:14

He identificado el problema en la toma de las órdenes: El problema lo ocaciona porque algunas configuraciones regionales utilizan la coma (,) como separador de punto decimal. Un ejemplo es España (Neftalí) y Argentina (ecfisa). -Disculpame José, pero no sé exactamente dónde vives, pero para tí debe ser igual si experimentaste el mismo problema-.

La ventana de selección de exámenes se comunica con la ventana de toma de órdenes intercambiando información en formato JSON. Es ahí el problema. La definición de JSON solo especifica el punto (.) como separador de punto decimal. Es por eso que al pasar un valor como este:
Cita:

{"selected_id":2,"select_name":"Hemograma Completo","selected_category":"Hematología","selected_quantity":1,"selected_sub_total":100,00,"selected_discount":"0%","selected_vat":0,00,"selected_net_total":100,00,"examid":0,"invoice_no":0}
El interprete se confunde en las partes en negrillas generando los AV que alguno de ustedes habían estado experimentando.

La solución:
He cambiado el código que genera la anterior cadena JSON para devuelva los decimales utilizando punto (.) para separar el decimal del entero. El ejecutable reparado puede descargarse desde esta dirección: http://dl.dropbox.com/u/11734896/biolab_ejecutable.exe

El resto de problemas que me había comentado Neftalí aún no los he revisado a fondo. Este es el que para mí era de mayor prioridad. Pero sin duda también los tengo que resolver (creo que están más fáciles).

Saludos a todos y nuevamente muchísimas gracias por la ayuda que me han dado.

Attn.: Chris

José Luis Garcí 12-08-2011 07:52:21

Chris, para tú información. vivo en las islas afortunadas, para ser exacto en las islas Canarias, que pertenecen a España, para ser más exacto en Gran Canaria en la población de Teror, municipio del interior, donde se encuentra la patrona de mi isla, La Virgen del Pino http://www.corazones.org/maria/pino_nra_senora.htm

DarKraZY 12-08-2011 08:46:25

Hola!
He realizado una pequeña prueba. Y antes de nada, he de decir que la impresión visual es muy satisfactoria. Probaré dentro un rato con el nuevo ejecutable.

Aquí algunas mejoras o problemas que me he encontrado:
  • Más opciones de instalación
  • No sale el icono de la aplicación, sino el genérico de Windows, en el escritorio
  • El fichero de excepciones *.elf se guarda en el escritorio
  • No está preparado para multi-monitor, tengo 2, y la ventana de usuarios sale entre ambos.
  • Al dar de alta el usuario, sale una nueva ventana, pero no se oculta la anterior.
  • Ortografía: ficha de alta del nuevo Paciente: cédula, envío

Saludos

José Luis Garcí 12-08-2011 09:05:26

Chirs, ahora que he solucionado el problema con mi base de datos de la empresa, te pongo el código de búsqueda que tengo (más que seguro que tu también lo conoces) e imágenes para expresar mejor lo que hablaba de las búsquedas.

Código
Código Delphi [-]
procedure TFcontactos.Button2Click(Sender: TObject);
//------------------------------------------------------------------------------
//***********************************************[ REALIZAR LA BUSQUEDA ]*******
//------------------------------------------------------------------------------
begin
  if Edit1.Text<>'' then
  begin
    if CheckBox1.Checked=false then
    begin       //Mejor busqueda pero no admite acentos
      IBDContactos.Active:=False;
      IBDContactos.SelectSQL.Clear;
      IBDContactos.SelectSQL.Add('select * from CONTACTOS WHERE UPPER (EMPRESA) LIKE '+QuotedStr('%'+UpperCase(Edit1.Text)+'%'));
      IBDContactos.Active:=True;
    end else
    begin         //Busque ignorando los acentos
      IBDContactos.Locate(RemoveAcentos(UpperCase('EMPRESA')),
                          RemoveAcentos(UpperCase(edit1.Text)),
                          [ loCaseInsensitive,loPartialKey]);
    end;
  end;
end;

imagen de la base sin búsqueda


Segunda imagen ya buscando


y Tercera imagen


Como te comentaba, según realiza la búsqueda, sólo van quedando los que coinciden, es verdad que si pones búsqueda sin acentos (se que tengo que corregir el acento de búsqueda), ya no se habilita esta opción, pues aún no he descubierto la manera de hacerlo, pero aún así se ira posicionando en el registro según la búsqueda.

Por cierto RemoveAcentos es una función que me baje de un foro de delphi brasileño, si hace falta pongo la función.

Neftali [Germán.Estévez] 12-08-2011 09:22:22

Cita:

Empezado por Chris (Mensaje 409277)
La solución:
He cambiado el código que genera la anterior cadena JSON para devuelva los decimales utilizando punto (.) para separar el decimal del entero. El ejecutable reparado puede descargarse desde esta dirección: http://dl.dropbox.com/u/11734896/biolab_ejecutable.exe

Hola Chris.
He bajado esa versión del EXE (1.0.1.703) y sigue teniendo el mismo problema con las órdenes. Al seleccionar el examen, PETA.

Neftali [Germán.Estévez] 12-08-2011 09:23:47

Cita:

Empezado por Chris (Mensaje 409233)
Lo que sucede es que la base de datos no se crea con la instalación. Biolab la crea en su primera ejecución. La base de datos persiste a menos que la borres manualmente. La base de datos está en: %DOCUMENTOS_PUBLICOS%\biolab\database.fdb

Lo se, lo se. Y hubiera jurado que la había borrado manualmente. :confused::confused:
Debe ser que me equivoqué. :(

Chris 12-08-2011 16:18:18

Cita:

Empezado por DarKraZY (Mensaje 409284)
Hola!
He realizado una pequeña prueba. Y antes de nada, he de decir que la impresión visual es muy satisfactoria. Probaré dentro un rato con el nuevo ejecutable.

Aquí algunas mejoras o problemas que me he encontrado:
  • Más opciones de instalación
  • No sale el icono de la aplicación, sino el genérico de Windows, en el escritorio
  • El fichero de excepciones *.elf se guarda en el escritorio
  • No está preparado para multi-monitor, tengo 2, y la ventana de usuarios sale entre ambos.
  • Al dar de alta el usuario, sale una nueva ventana, pero no se oculta la anterior.
  • Ortografía: ficha de alta del nuevo Paciente: cédula, envío

Saludos

Gracias DarKrazy por tu observaciones. El problema del icono no sé lo que ha pasado aún. Tendré que revisar más en detalle el ejecutable. Nunca lo había probado en un sistema con más de un monitor, así que realmente me "agarras movido". Veré que puedo hacer en este caso. Gracías por las observaciones ortográficas, le daré una nueva revisada a la interfaz para encontrar estos problemas.

Con respecto a las opciones de instalación, lo hecho así porque tengo en consideración que mi público objetivo tiene pocos conocimientos técnicos. Es por esa razón que he reducido al máximo los pasos de la instalación. No entendí a lo que te refieres con: "Al dar de alta el usuario, sale una nueva ventana, pero no se oculta la anterior." Me podrías explicar mejor?

Por último, si se te creo un archivo .elf (no debió ser en el escritorio) me lo podrías enviar compañero? Es para darle análisis y reparar los problemas que aparezcan en el informe.

Saludos,
Chris

Chris 12-08-2011 16:33:15

José, gracias por compartir tu experiencia conmigo. La búsqueda en Biolab funciona más o menos a cómo lo estás haciendo tú. Pero solo con SQL, no con Locate. En el código que compartiste:
Código Delphi [-]
IBDContactos.Locate(RemoveAcentos(UpperCase('EMPRESA')),
                          RemoveAcentos(UpperCase(edit1.Text)),
                          [ loCaseInsensitive,loPartialKey]);
Tienes dos problemas, uno de ellos es que no estás quitando los acentos al valor del campo, sino a una cadena constante ('EMPRESA'). Lo que estás haciendo es solo quitarle los acentos al al nombre del campo "EMPRESA". En tu caso creo que Locate no te sirve, talvez un código así te puede ayudar mejor:
Código Delphi [-]
begin
    if Edit1.Text<>'' then
    begin
        if CheckBox1.Checked=false then
        begin       //Mejor busqueda pero no admite acentos
              IBDContactos.Active:=False;
              IBDContactos.SelectSQL.Clear;
              IBDContactos.SelectSQL.Add('select * from CONTACTOS WHERE UPPER (EMPRESA) LIKE '+QuotedStr('%'+UpperCase(Edit1.Text)+'%'));
              IBDContactos.Active:=True;
        end
        else
        with IBDContactos do //Busque ignorando los acentos
        try
            DisableControls;
            First;
               
            while not Eof do
                if AnsiPos(RemoveAcentos(AnsiLowerCase(edit1.Text))
                           RemoveAcentos(AnsiLowerCase(FieldByName('empresa').AsString))) then
                    Break
                else
                    Next;                
        finally
            EnableControls;
        end;
end;

Saludos,
Chris

Chris 12-08-2011 16:36:18

Cita:

Empezado por Neftali (Mensaje 409288)
Hola Chris.
He bajado esa versión del EXE (1.0.1.703) y sigue teniendo el mismo problema con las órdenes. Al seleccionar el examen, PETA.

PETA? :confused: No entendí :(.

Neftalí, podrías decirme que localización estás utilizando?

Gracias amigo!

Saludos,
Chris

Neftali [Germán.Estévez] 12-08-2011 17:26:04

Cita:

Empezado por Chris (Mensaje 409327)
Neftalí, podrías decirme que localización estás utilizando?

Si te refieres a la configuración regional; es esta:


José Luis Garcí 12-08-2011 17:50:27

Chris, te aseguro que el Locate funciona, claro que sólo por el Campo Empresa, pero, es por el mismo que hago la búsqueda en SQL, lo que quería decirte es que en tu caso escribes la cadena y luego buscas en mi caso el botón lo activo por su evento y desde el edit en el OnChage, donde le hago una llamada, de esta manera, según escribe el usuario va reduciendo el número de registro muy probablemente al que busca únicamente.

Chris 12-08-2011 18:22:52

Cita:

Empezado por Neftali (Mensaje 409288)
Hola Chris.
He bajado esa versión del EXE (1.0.1.703) y sigue teniendo el mismo problema con las órdenes. Al seleccionar el examen, PETA.

Confirmado! Estaba ya mariado y desvelado de tanto código :p. Subí por error copia del ejecutable con el problema y no el que ya lo tiene corregido. Lamentablemente no tengo a mano la nueva versión. Ahora que llegué a mi casa, repararé los otros problemas que me comentaste Neftalí y volveré a subir el nuevo ejecutable.

Saludos,
Chris

ecfisa 12-08-2011 19:09:31

Hola Chris.

Te paso otra posibilidad para las busquedas extendidas.
Me hice una función para componer la consulta, no digo con esto que sea inventiva mía, de algún lado seguramente habré sacado la idea ...
Código Delphi [-]
function ComponerConsulta(Tabla, Criterio, Texto: string; Inx: Integer): string;
begin
  Result:= 'SELECT * FROM ' + Tabla + ' WHERE ' + Criterio;
  case Inx of
    0:Result:= Result + ' LIKE ' + QuotedStr(Texto + '%'); // Comienza
    1:Result:= Result + ' CONTAINING ' + QuotedStr(Texto); // Contiene
    2:Result:= Result + ' = ' + QuotedStr(Texto);          // Coincide
    3:Result:= Result + ' LIKE ' + QuotedStr('%' + Texto); // Termina
    4:Result:= 'SELECT * FROM ' + Tabla;                   // Ver todo
  end;
  Result:= Result + ' ORDER BY ' + Criterio;
end;
Luego, como ejemplo, podés usar un ComboBox para el criterio (por nombre, direccion, teléfono, documento,...), un Edit para ingresar el texto buscado y un RadioGroup para el tipo de coincidencia (comienza con, contiene a, coincide con, termina con y restaurar). El resultado de la seleccíon lo podes mostrar en un DBGrid para ampliar más las opciones.
Si aún así no encuentra al paciente; el que está frente al monitor es un neardental... :D
La confección de la consulta no ofrece inseguridad alguna por que es de uso interno de la aplicación. Y la degradación de la performance es mínima ya que la búsqueda no es incremental y sólo se usa cuando existen problemas para individualizar un paciente (aunque puede aplicarse a cualquier tabla).

Quizá ya se te haya ocurrido y lo hayas descartado por no adecuarse al proyecto, pero bueno te hacerco la idea con la esperanza de que te sea de utilidad.

Un saludo.:)

Edito: No pongo imágenes de mis pantallas por que son espantosas. Además no estamos en el foro 'Humor' y no quiero que nadie se ría...:p

José Luis Garcí 13-08-2011 08:40:29

ecfisa, eso no vale yo pongo mis pantallas, que son horribles y tú no pones tus tablas, que pasa aqui tenemos derecho a reirnos todos :D:D:D:D:D. Ahora en serio, dudo que sean espantosas, por tu manera de responder y la ayuda que brindas, dudo mucho que sean espantosas ni las pantallas ni las tablas.

Chris 16-08-2011 19:20:12

Antes que todo, ecfisa quiero darte las gracias por el código que me has brindado. Aunque creo que lamentablemente ya estoy un poco tarde para implementarlo en el sistema. Lo que sí he implementado de tí es la utilización de caracteres comodines, a cómo me sugeriste. Ahora, el carácter * es reemplazado por % en el código SQL de búsqueda.

Me he es grato compartir con ustedes una nueva versión de Biolab, la construcción 706. Esta nueva versión corrige la mayoría de problemas que voluntariamente me han ayudado a encontrar. Les dejo el enlace para que puedan descargar y nuevamente probarla si no es mucha molestia :)

http://dl.dropbox.com/u/11734896/biolab_b706.exe

Nuevamente, muchas gracias a todos ustedes compañeros! Les debo una! :)

Saludos,
Chris

gluglu 16-08-2011 20:10:14

Hola Chris,

Sólo comentarte que he estado siguiendo un poco este hilo aunque no instalé tu aplicación en ningún momento.

Ahora quise instalarla con el último ejecutable que indicas, y no tengo manera, ni me crea la base de datos, ni sé donde instalar el ejecutable, y tampoco sé si el EXE que ofreces incluye 'instalador' o no, o como decías anteriormente, el mismo EXE es el que te crea la BBDD, que en mi caso no veo donde.

Tengo XP y FB 2.1 instalados.

Chris 16-08-2011 22:07:44

Gracis gluglu por tu interés. Lo que sucede es que primero tendrás que hacer la instalación con el instalar que previamente había compartido. Puedes descargarlo de http://dl.dropbox.com/u/11734896/biolab.exe
Cuando termines el proceso de instalación, tendrás que reemplazar el ejecutable principal, llamado "biolab.exe" por la última versión que he subido (http://dl.dropbox.com/u/11734896/biolab_b706.exe).

Por último, lamentablemente Biolab no te funcionará si tienes instalada la versión 2.1 de Firebird. Cualquier inconveniente que tengas, no dudes en comentarmelo.

Saludos,
Chris

gluglu 17-08-2011 08:48:26

Hola Chris,

Eso intenté exactamente. Primero me descargué el Exe que ocupa más espacio porque supuse que tenía algún instalador adicional tal y como se comentaba en anteriores post's de este hilo, y después me disponía a instalar la última versión del Exe.

Pero no me ha funcionado tampoco así. El instalador no me crea ningún directorio ni ninguna base de datos.

En cualquier caso, según se comentaba también en el hilo, a pesar de tener instalada la versión 2.1 de FB, al utilizar en tu programa la versión embedida, creo recordar que se podía trabajar con ambos.

En estos momentos, de pleno desarrollo particular, no puedo desinstalar la versión 2.1 FB de mi ordenador. :o

Saludos

ecfisa 17-08-2011 09:37:13

Hola Chris.

Probando la nueva versión...:)

Ninguno de los problemas anteriores se presentó, y la busqueda anda de diez.

Pero tuve un problema en Tomando una nueva órden:
Cita:

The application has encountered a problem.We
are sorry for the inconvenience.
TodoExams: Cannot perform this operation on a close dataset.
Los pasos que realizé hasta obtenerlo fueron:
Cita:

Tomar orden -> Seleccionar paciente -> Busque un paciente -> Agregar paciente -> (llenar datos paciente),btn Agregar paciente -> Doctor -> Agregar exámen -> Serología -> Proteina C reactiva -> Agregar exámen -> Tomar orden.
Si Aceptas el error -> Tomar órden: queda (lista para entregar).
Te adjunto bioelog.elf y el report error que copié al portapapeles como ErrorBioLab_b706.txt dentro de Errores.zip, por si te sirven de ayuda.

Un saludo.


La franja horaria es GMT +2. Ahora son las 19:01:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi