
05/07/2011, 15:35
|
| | Fecha de Ingreso: enero-2010
Mensajes: 150
Antigüedad: 15 años, 2 meses Puntos: 0 | |
Bandera en VB6 Hola, estoy haciendo una aplicación donde debo borrar una categoría si la misma no esta siendo utilizada por ningun socio. En caso contrario muestra un mensaje y no lo borra. Borra perfecto, pero no puedo hacer que la bandera "haysocio= 0" se actualice y se ponga en 1 en caso de que un socio tenga esa categoria asociada. Solamente me muestra un solo valor en 1 de 5 categorias que tiene la tabla. Donde tengo el error?. Estoy usando DataControl.
Aqui el codigo: Private Sub Form_Load()
Dim Path_Base_Dato As String, db As Database
Dim rst, rec As Recordset
Path_Base_Dato = App.Path
Path_Base_Dato = Path_Base_Dato & "\bd1.mdb" 'CONEXION A BASE DE DATOS
'Abre la base de datos
Set db = OpenDatabase(Path_Base_Dato)
'Abre el Recordset
Set rst = db.OpenRecordset( _
"SELECT DescripcionCategoria FROM Categoria ORDER BY DescripcionCategoria", _
dbOpenSnapshot)
Set rec = db.OpenRecordset( _
"SELECT * FROM Socio", _
dbOpenSnapshot)
' Se mueve la primer registro
rst.MoveFirst
Do While Not rst.EOF
'Agrega el Nombre al Combo
ComboCategorias.AddItem rst!DescripcionCategoria
'siguiente registro
rst.MoveNext
Loop
'Cierra el recordset y la base
rst.Close
rec.Close
db.Close
'Se asigna la base de datos al Data1
Data1.DatabaseName = Path_Base_Dato
Data2.DatabaseName = Path_Base_Dato
'Seleccionamos el primer elemento del combo
ComboCategorias.ListIndex = 0
End Sub Private Sub ComboCategorias_Click()
Dim i, cant As Integer
' Al hacer Click en el elemento del combo _
se selecciona mediante sql el registro _
y la cadena Sql se asigna al Recorsource del _
control data
Data1.RecordSource = _
"SELECT * FROM Categoria WHERE DescripcionCategoria='" & ComboCategorias & "'"
Data2.RecordSource = _
"SELECT * FROM Socio"
'Refresca el control data
Data1.Refresh
Data2.Refresh
haysocio = 0
cat = Text1.Text
If ComboCategorias.Text <> "" Then
cant = Data2.Recordset.RecordCount
Data2.Recordset.MoveFirst
For i = 0 To cant - 1
If Data2.Recordset.Fields("CodigoCategoria") = cat Then
haysocio = 1
Exit For
Else
Data2.Recordset.MoveNext
End If
Next
End If
Text4.Text = haysocio
End Sub Private Sub Command1_Click()
If ComboCategorias.Text = "" Then
MsgBox "La descripción de categoría no puede estar vacía", vbInformation, "Información al Usuario"
ComboCategorias.SetFocus
Exit Sub
End If
If haysocio <> 1 Then
With Data1.Recordset
'Elimina
If Data1.Recordset.RecordCount = 0 Then Exit Sub
.Delete
'Posiciona en el siguiente
.MoveNext
If Not .EOF Then .MoveLast
End With
MsgBox "Se ha eliminado la categoría seleccionada", vbInformation, "Datos Registrados"
Unload Me
Else
MsgBox "La categoría está siendo utilizada en algún socio", vbInformation, "Datos Registrados"
End If
End Sub |