PUBLIC SUB CerrarConexion()
IF con.hConn = NULL THEN RETURN
con.hConn.CLOSE()
con.hConn = NULL
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Sentencia para mostrar los resultados de la búsqueda
'++++++++++++++++++++++++++++++++++++++++++++++++++++++
PRIVATE SUB refrescarLista(OPTIONAL filtro AS String)
DIM hResul AS Result
DIM Clave AS String
tabla.Clear()
IF con.ConectarBase() THEN RETURN
tabla.Columns.Count = 6
tabla.Columns[0].text = "Title"
tabla.Columns[1].Text = "Collection"
tabla.Columns[2].text = "Classification"
tabla.Columns[3].Text = "Concentration"
tabla.Columns[4].Text = "Format"
tabla.Columns[5].text = "Comments"
hResul = con.hConn.Exec("select * from movinfo" & If(filtro, " where " & filtro, "")) 'Si hay cadena de filtro se adjunta, si no, no)
DO WHILE hResul.Available
Clave = hResul["title"]
tabla.Add(Clave, Clave) '------------------------ Aquí es donde me indica que hay error "Null Key"
tabla[Clave][1] = hResul["collection"]
tabla[Clave][2] = hResul["classification"]
tabla[Clave][3] = hResul["concentration"]
tabla[Clave][4] = hResul["format"]
tabla[Clave][5] = hResul["comments"]
hResul.MoveNext()
LOOP
CerrarConexion()
'++++++++++++++++++++++++++++++++++++++++++++++++++
' Notifica en un label cuantos videos hay con el "título sugerido" en el textbox
'++++++++++++++++++++++++++++++++++++++++++++++++++
IF tabla.Count = 1 THEN
VideoCount.Text = tabla.Count & " video"
ELSE
VideoCount.Text = tabla.Count & " videos"
ENDIF
END
PUBLIC SUB form_open()
ME.Title = "Video Database"
refrescarLista() 'de entrada no enviamos ninguna cadena de filtro con lo que nos muestra todos
' tabla.Move(0, 60)
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++
' Borrar artículo seleccionado con la tecla "Delete"
'++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB tabla_KeyRelease()
IF Key.Code = Key.Delete THEN
deleteselect()
ENDIF
END
'++++++++++++++++++++++++++++++++++++++++++++++++
' Sentencia para borrar el artículo seleccionado
' de la base de datos y a su vez del ColumnView
'++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB deleteselect()
IF tabla.Current = NULL THEN RETURN
IF tabla.Current.Selected = FALSE THEN RETURN
IF con.ConectarBase() THEN RETURN
SELECT Message.Delete("Do you really want to delete, " & tabla.Current.Key & " ?", "Yes", "No")
CASE 1
TRY con.hConn.Exec("delete from movinfo where title=&1", tabla.Current.Key)
IF ERROR THEN
Message.Error("Can't erase \n" & Error.Text)
ELSE
tabla.Current.Delete()
ENDIF
' TxtSearch.Text = ""
CASE 2
STOP EVENT
END SELECT
CerrarConexion()
' refrescarLista()
IF tabla.Count = 1 THEN
VideoCount.Text = tabla.Count & " video"
ELSE
VideoCount.Text = tabla.Count & " videos"
ENDIF
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++
' Muestra el formulario para añadir a la base
'++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB BtnAdd_Click()
IF con.ConectarBase() THEN RETURN
FData.RunNew(con.hConn)
CerrarConexion()
Form_Open()
END
PUBLIC SUB tabla_Activate()
DIM hResul AS Result
IF tabla.Current = NULL THEN RETURN
IF con.ConectarBase() THEN RETURN
tabla.Enabled = FALSE
hResul = con.hConn.Edit("movinfo", "title=&1", tabla.Current.Key)
FData.RunEdit(hResul)
tabla.Current[0] = hResul["title"]
tabla.Current[1] = hResul["collection"]
tabla.Current[2] = hResul["classification"]
tabla.Current[3] = hResul["concentration"]
tabla.Current[4] = hResul["format"]
tabla.Current[5] = hResul["comments"]
tabla.Enabled = TRUE
CerrarConexion()
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Buscador: Busca artículos en la base de datos mientras
' se escribe y los va mostrando en el ColumnView
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB TxtSearch_change()
refrescarLista("title like" & "'" & TxtSearch.Text & "%" & "'")
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++
' Se despliega el "Popup Menu" con el "Right Click"
'++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB tabla_Menu()
popupmenu.Popup()
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++
' Borrar artículo seleccionado con el "Popup Menu"
'++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB delectselected_Click()
deleteselect()
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Para editar el artículo seleccionado con el "Popup Menu"
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB editselected_Click()
END
PUBLIC SUB VideoCount_DblClick()
TxtSearch.Text = ""
END
IF con.hConn = NULL THEN RETURN
con.hConn.CLOSE()
con.hConn = NULL
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Sentencia para mostrar los resultados de la búsqueda
'++++++++++++++++++++++++++++++++++++++++++++++++++++++
PRIVATE SUB refrescarLista(OPTIONAL filtro AS String)
DIM hResul AS Result
DIM Clave AS String
tabla.Clear()
IF con.ConectarBase() THEN RETURN
tabla.Columns.Count = 6
tabla.Columns[0].text = "Title"
tabla.Columns[1].Text = "Collection"
tabla.Columns[2].text = "Classification"
tabla.Columns[3].Text = "Concentration"
tabla.Columns[4].Text = "Format"
tabla.Columns[5].text = "Comments"
hResul = con.hConn.Exec("select * from movinfo" & If(filtro, " where " & filtro, "")) 'Si hay cadena de filtro se adjunta, si no, no)
DO WHILE hResul.Available
Clave = hResul["title"]
tabla.Add(Clave, Clave) '------------------------ Aquí es donde me indica que hay error "Null Key"
tabla[Clave][1] = hResul["collection"]
tabla[Clave][2] = hResul["classification"]
tabla[Clave][3] = hResul["concentration"]
tabla[Clave][4] = hResul["format"]
tabla[Clave][5] = hResul["comments"]
hResul.MoveNext()
LOOP
CerrarConexion()
'++++++++++++++++++++++++++++++++++++++++++++++++++
' Notifica en un label cuantos videos hay con el "título sugerido" en el textbox
'++++++++++++++++++++++++++++++++++++++++++++++++++
IF tabla.Count = 1 THEN
VideoCount.Text = tabla.Count & " video"
ELSE
VideoCount.Text = tabla.Count & " videos"
ENDIF
END
PUBLIC SUB form_open()
ME.Title = "Video Database"
refrescarLista() 'de entrada no enviamos ninguna cadena de filtro con lo que nos muestra todos
' tabla.Move(0, 60)
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++
' Borrar artículo seleccionado con la tecla "Delete"
'++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB tabla_KeyRelease()
IF Key.Code = Key.Delete THEN
deleteselect()
ENDIF
END
'++++++++++++++++++++++++++++++++++++++++++++++++
' Sentencia para borrar el artículo seleccionado
' de la base de datos y a su vez del ColumnView
'++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB deleteselect()
IF tabla.Current = NULL THEN RETURN
IF tabla.Current.Selected = FALSE THEN RETURN
IF con.ConectarBase() THEN RETURN
SELECT Message.Delete("Do you really want to delete, " & tabla.Current.Key & " ?", "Yes", "No")
CASE 1
TRY con.hConn.Exec("delete from movinfo where title=&1", tabla.Current.Key)
IF ERROR THEN
Message.Error("Can't erase \n" & Error.Text)
ELSE
tabla.Current.Delete()
ENDIF
' TxtSearch.Text = ""
CASE 2
STOP EVENT
END SELECT
CerrarConexion()
' refrescarLista()
IF tabla.Count = 1 THEN
VideoCount.Text = tabla.Count & " video"
ELSE
VideoCount.Text = tabla.Count & " videos"
ENDIF
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++
' Muestra el formulario para añadir a la base
'++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB BtnAdd_Click()
IF con.ConectarBase() THEN RETURN
FData.RunNew(con.hConn)
CerrarConexion()
Form_Open()
END
PUBLIC SUB tabla_Activate()
DIM hResul AS Result
IF tabla.Current = NULL THEN RETURN
IF con.ConectarBase() THEN RETURN
tabla.Enabled = FALSE
hResul = con.hConn.Edit("movinfo", "title=&1", tabla.Current.Key)
FData.RunEdit(hResul)
tabla.Current[0] = hResul["title"]
tabla.Current[1] = hResul["collection"]
tabla.Current[2] = hResul["classification"]
tabla.Current[3] = hResul["concentration"]
tabla.Current[4] = hResul["format"]
tabla.Current[5] = hResul["comments"]
tabla.Enabled = TRUE
CerrarConexion()
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Buscador: Busca artículos en la base de datos mientras
' se escribe y los va mostrando en el ColumnView
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB TxtSearch_change()
refrescarLista("title like" & "'" & TxtSearch.Text & "%" & "'")
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++
' Se despliega el "Popup Menu" con el "Right Click"
'++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB tabla_Menu()
popupmenu.Popup()
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++
' Borrar artículo seleccionado con el "Popup Menu"
'++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB delectselected_Click()
deleteselect()
END
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Para editar el artículo seleccionado con el "Popup Menu"
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PUBLIC SUB editselected_Click()
END
PUBLIC SUB VideoCount_DblClick()
TxtSearch.Text = ""
END
- "title" es el primary key de la base de datos
- Los datos de conexión se encuentran en el módulo "con"