omoreno 20-09-2024, 17:22
Hola colegas.

Estoy verificando una conexión ODBC a SQL Server pero la consultas y procedimientos almacenados ejecutados con EXEC que tengan validación siempre me retornan el error: 'UNABLE TO FETCH ROW'.

Gambas: 3.19.4
ODBC: FreeTDS o Microsoft ODBC 18
SQL Server: 2022 Express

Como retornan datos en sus procedimientos almacenados para que no les salga el error.
Por ejemplo, si quiero hacer un update de esta forma:
 
Código:
 
IF EXISTS (SELECT ID FROM Usuarios WHERE ID = '1')
  BEGIN
    UPDATE Usuarios 
    SET Nombre = 'Nombre x', Apellido = 'Apellido x'
    WHERE ID = '1'
    SELECT '1:ok' AS 'RESULTADO'
  END
ELSE
  BEGIN
    SELECT '0:NO EXISTE' AS 'RESULTADO'
  END

Adjunto un modulo de pruebas, gracias por las posibles repuestas.
Saludos.
Archivos adjuntos
.gz
SqlSeverODBC-0.0.1.tar.gz (Tamaño: 10.62 KB Descargas: 0)
Shell 20-09-2024, 14:58
Buenas!

Viendo un ejemplo para la terminal me dio por hacerlo con formularios, añadirle la posibilidad de
poder pasar información entre los formularios y agregar la posibilidad de grabar al salir
la información en un archivo setting.

El ejemplo consiste en una recepción de una consulta médica.
Se agregan nombres de pacientes y se van llamando a estos según van llegando.
Ah y si queda alguno y se ha cerrado la consulta, que vuelva mañana.

[Imagen: OPw3mse.png]

Los nombres de los pacientes no se eliminan de la lista hasta pasar el tiempo estipulado.
Van en orden de llegada.

Si cerramos la aplicación se guarda la lista de pacientes que no fueron atendidos.

Creo que la forma de pasar información de un formulario a otra es la más adecuada,
aunque sea poca en este caso.

Formulario FMain:

Código:
' Gambas class file

Const TITULO As String = "Recepción de la consulta"
Const TIEMPOMAXCONSULTA As Integer = 5

Private tiempo As Integer
Property nombre As String Use $nombre

Public Sub Form_Open()

  Settings.Read(Me)

  lstboxPacientes.List = Settings["ListaPacientes", []]

  'No se puede llamar a pacientes si no existen
  If lstboxPacientes.Count = 0 Then btnCallNext.Enabled = False

End

Public Sub Opciones_Click()

  Select Case Last.tag
    Case 0
      'Añadir un nuevo paciente
      RegistrarPaciente()
    Case 1
      If lstboxPacientes.Count >= 1 Then
        Timer1.Delay = 1000
        Timer1.Start
        'Si ya no hay más pacientes, desactivamos la opción de llamar a otros pacientes
        If lstboxPacientes.Count = 0 Then btnCallNext.Enabled = False
      Endif
    Case 2
      Me.Close
  End Select

End

Public Function RegistrarPaciente() As String

  Dim fpaciente As New FormPaciente

  fpaciente.formu = Me
  fpaciente.ShowModal()

  lstboxPacientes.Add(Me.nombre)
  If Not btnCallNext.Enabled Then btnCallNext.Enabled = True

End

Public Sub Timer1_Timer()

  If tiempo = TIEMPOMAXCONSULTA Then
    lstboxPacientes.Remove(0)
    If lstboxPacientes.Count = 0 Then btnCallNext.Enabled = False
    tiempo = 0
    Me.Title = TITULO
    Timer1.Stop
  Else
    Me.Title = "Paciente: " & lstboxPacientes.List.First & " en la consulta..." & tiempo
    tiempo += 1
  Endif

End

Public Sub Form_Close()

  Settings.Write(Me)
  Settings["ListaPacientes"] = lstboxPacientes.List
  Settings.Save()

End

Formulario de entrada del nombre del paciente

Código:
Property formu As Object Use $formu

Public Sub Form_Open()

End

Public Sub btnEntrarSalir_Click()

  If IsNull(Trim(txtbPaciente.text)) Then
    txtbPaciente.Text = ""
    Stop Event
  Else
    $formu.nombre = Trim(txtbPaciente.Text)
    Me.Close
  Endif

End

Public Sub txtbPaciente_KeyPress()

  If Key.Code = Key.Enter Or Key.Code = Key.Return Then btnEntrarSalir_Click()

End

Para alinear mejor los controles y situarlos en el formulario del paciente, usé organizadores.

Puede darse el caso cuando ejecutamos un formulario es que veces cuando se presentan
los controles ( incluso usando organizadores) estos queden más a un lado que otro con respecto
al superior. Esto es a veces es una lata y requiere algo de tiempo. Rolleyes

Saludos
Archivos adjuntos
.gz
HabitacionEsperaDoctor-0.0.2.tar.gz (Tamaño: 7.82 KB Descargas: 2)
Shell 16-09-2024, 13:33
Buenas!.

Realizando una consulta sencilla con el operador like la versión que incluye de la aplicación por defecto en Linux Mint 21.1 es la 3.12
se me cerraba sin más.

Como no sé realizar un seguimiento de una aplicación en Linux cuando se cierra ( cosa que deberíamos conocer ) o tener
unas ideas de que hacer.  La ejecuté directamente desde la terminal hasta que se genera el error:
 
Cita: 
Assertion [cpMax <= pdoc->Length()] failed at ../src/Editor.cpp 6096

Abortado (`core' generado)

Así que busqué y encontré ese error:

Assertion [cpMax <= pdoc->Length()] failed at ../src/Editor.cpp 6096 #2611

La respuesta del usuario Sandman7290: Comenta:

"This is fixed with 367665e But is not backported to 3.12.x"

Entonces supongo que todas las 3.12.x seguirán teniendo el error. Y fui a la web de la aplicación para descargar la versión 3.13.

Sqlite Browser Download

Si vais a la parte de Linux lo primero que aparece es la app image. Luego en la sección de Debian se encuentra el ppa.
A la hora de realizar apt-get update no hubo problemas, a la hora de de hacer apt-get upgrade, quedan paquetes retenidos,
al menos en mi sistema:
 
Cita: 
Los siguientes paquetes se han retenido:
  libsqlite3-0 libsqlite3-dev python3-update-manager sqlite3 sqlitebrowser update-manager-core
0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 6 no actualizados.

Decidí instalar sqlitebrowser desde linea de comando y se ha instalado sin problemas.

Ahora al intentar de nuevo actualizar las versiones de las aplicaciones aparece:
 
Cita: 
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
  libqscintilla2-qt5-15 libqscintilla2-qt5-l10n
Utilice «sudo apt autoremove» para eliminarlos.
Los siguientes paquetes se han retenido:
  libsqlite3-0 libsqlite3-dev python3-update-manager sqlite3 update-manager-core
0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 5 no actualizados.

Las primeras son las que debía usar la versión anterior que ahora parece que no.
Y los que son retenidos pues deben ser por la versión de Linux Mint, que no esta al día.

Al realizar:

Código:
sudo apt list --upgradable

Aparece:
 
Cita: 
Listando... Hecho
libsqlite3-0/jammy 3.44.0-0-20359~202311021114~202311041424~ubuntu22.04.1 amd64 [actualizable desde: 3.37.2-2ubuntu0.3]
libsqlite3-dev/jammy 3.44.0-0-20359~202311021114~202311041424~ubuntu22.04.1 amd64 [actualizable desde: 3.37.2-2ubuntu0.3]
python3-update-manager/jammy-updates,jammy-updates 1:22.04.20 all [actualizable desde: 1:22.04.19]
sqlite3/jammy 3.44.0-0-20359~202311021114~202311041424~ubuntu22.04.1 amd64 [actualizable desde: 3.37.2-2ubuntu0.3]
update-manager-core/jammy-updates,jammy-updates 1:22.04.20 all [actualizable desde: 1:22.04.19]

Si instalo manualmente todos esos paquetes.

Código:
sudo apt-get install libsqlite3-0 libsqlite3-dev python3-update-manager sqlite3 update-manager-core

El sistema me responde:
 
Cita: 
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Los paquetes indicados a continuación se instalaron de forma automática y ya no son necesarios.
  glib-networking:i386 gstreamer1.0-x:i386 libaa1:i386 libavc1394-0:i386 libcaca0:i386 libcairo-gobject2:i386 libdv4:i386 libgdk-pixbuf-2.0-0:i386 libgstreamer-plugins-good1.0-0:i386 libgudev-1.0-0:i386 libiec61883-0:i386
  libmp3lame0:i386 libproxy1v5:i386 libraw1394-11:i386 libshout3:i386 libslang2:i386 libspeex1:i386 libtag1v5:i386 libtag1v5-vanilla:i386 libtwolame0:i386 libvpx7:i386 libwavpack1:i386 libxdamage1:i386 libxv1:i386
Utilice «sudo apt autoremove» para eliminarlos.
Paquetes sugeridos:
  sqlite3-doc
Los siguientes paquetes se ELIMINARÁN:
  gstreamer1.0-plugins-good:i386 libsoup2.4-1:i386 libsqlite3-0:i386
Se actualizarán los siguientes paquetes:
  libsqlite3-0 libsqlite3-dev python3-update-manager sqlite3 update-manager-core
5 actualizados, 0 nuevos se instalarán, 3 para eliminar y 0 no actualizados.
Se necesita descargar 2.727 kB de archivos.
Se liberarán 9.666 kB después de esta operación.

Y después de realizar la operación y eliminar los paquetes que ya no se necesitan y volver actualizar versiones de las aplicaciones instaladas:
El sistema me devuelve:
 
Cita: 
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Calculando la actualización... Hecho
0 actualizados, 0 nuevos se instalarán, 0 para eliminar y 0 no actualizados.

Confiando siempre en que el sistema hace lo correcto. Rolleyes
( Apañados estaríamos si no fuera así )

Si el administrador creé que es mejor mover el post al foro de Linux, pues que sea así.
Como era una aplicación de bases de datos, me pareció mejor situarla aquí. Pero no trata bases de datos, solo la aplicación.

Ah, que cabeza. Una vez instalada la nueva versión la consulta se realizó correctamente. Es que me pareció de lo más raro
que se cerrase la aplicación al realizar la consulta. Vale que pueda ser incorrecta por falta de experiencia ( que fue sencilla ),
pero cerrarse la aplicación. Menuda metedura de pata.
 

Al ver la versión de la aplicación muestra:
 
Cita: 
«DB Browser for SQLite» Versión 3.13.99 (Jul 23 2024)
Último «commit hash» cuando fue compilado: Unknown

Compilado para x86_64-little_endian-lp64, ejecutándose en x86_64
Versión de Qt 5.15.3
Versión de SQLCipher 4.5.5 community (basado en SQLite 3.42.0).

Al mostrar ese .99 me recuerda en parte a la versión de desarrollo de Gambas, que todas terminan de esa forma.

Saludos
Páginas (520):    1 12 13 14 15 16 520   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 264
Último miembro: NEURO
Temas del foro: 1,595
Mensajes del foro: 8,333
Últimos temas
Ver los repositorios del ...
Foro: Mundo Linux
Último mensaje por: Shell, Hace 10 minutos
Respuestas: 3 - Vistas: 35
Antiguo foro. ¿ Viable ?
Foro: Sobre gambas-es.org
Último mensaje por: guizans, Hace 1 hora
Respuestas: 1 - Vistas: 27
¿Cómo crear servidor FTP ...
Foro: General
Último mensaje por: Shordi, Hace 11 horas
Respuestas: 2 - Vistas: 53
TextEditor. Formateado. E...
Foro: General
Último mensaje por: Shell, Ayer, 14:33
Respuestas: 2 - Vistas: 40
Gambas 3.20
Foro: Instalación
Último mensaje por: Shell, Ayer, 14:32
Respuestas: 11 - Vistas: 293
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.