If resultado.Available Then
r = resultado["ID"]
Else
r = -1
Endif
r = IIf(resultado.Available, resultado["ID"], -1)
(29-12-2022, 22:44)guizans escribió: Pero este código me da error si el resultado está vacío. Acabo de leer en la documentación que IIf evalúa la expresión verdadera y falsa y por eso me da error. Parece un comportamiento anti intuitivo desde mi punto vista, aunque supongo que su motivo tendrá. Es una pena ya que usar IIf me ahorra líneas y parece mas elegante.
r = If(resultado.Available, resultado["ID"], -1)
Public Sub Form_Open()
Dim Apellido As String = Settings["Nombres/Apellidos"]
Dim nCols As String = Settings["TableView/Columns"]
Dim nRows As String = Settings["TableView/Rows"]
Dim colores As String = Settings["Colores/PanelColor"]
cbApellidoPrimero.Value = If(IsNull(Apellido), False, Apellido)
tv1.Columns.Count = If(IsNull(nCols), 2, nCols)
tv1.Rows.Count = If(IsNull(nRows), 4, nRows)
For i As Integer = 0 To tv1.Rows.Max
For j As Integer = 0 To tv1.Columns.Max
tv1[i, j].Text = Settings["TableView/" & i & "," & j]
Next
Next
Panel1.Background = If(IsNull(colores), &hFFFFFF, colores)
End
(29-12-2022, 22:44)guizans escribió: Hola a todos.Mmmm... sin ver tu código completo no digo esto en voz muy alta, pero así visto me parece que tu función de retornar el Result es, cuando menos confusa. Resultado ya indica por sí mismo si la búsqueda a sido exitosa o no, por lo que volver a preguntar por ello es un tanto inútil... aunque no conozco que visibilidad tiene tu variable resultado ni cómo estás usando la función que consulta la tabla de la BDD. ¿Podrías pasar el código completo?
Hago una llamada a un método que llama a una base de datos tipo SQlite3 y me devuelve un Result. Para evitar errores mas adelante del código compruebo si la búsqueda ha tenido éxito. Y lo puedo hacer así:
Código:If resultado.Available Then
r = resultado["ID"]
Else
r = -1
Endif
....
....
(30-12-2022, 23:19)guizans escribió: Hola.Ah... vale. La evaluación de todos los elementos de las expresiones es un "default" de las operaciones de gambas... hasta donde yo conozco. Así si escribes
Shordi: El código es un ejemplo de como IIf evalúa las expresiones antes de hacer la evaluación, no está incluido en ningún programa. Comento esto como curiosidad, me llamo mucho la atención.
Shell: No conocía la forma abreviada de If, me la apunto y también me apunto el manual.
Un saludo a todos.