estoy realizando un programa en basic pero necesito ayuda con las conexiones
necesito agregar , modificar y poder eliminar datos
para cada accion necesito un recordset verdad ? y por supuesto una conexion que supongo que sera la misma para todos en este caso AdoConexion
Dim AdoConexion As ADODB.Connection
para agregar los registros tendria que crear un sql
sql = "Insert Into TABLA (campo1,campo2,campo3)" _
& "Values ('" & campo1.Text & "'," & campo2.Text & "'" & campo3.Text & "')"
lalaRecordset.Open sql, AdoConexion, adOpenDynamic, adLockOptimistic
estaria bien de esa forma el agregar ?
para modificar seria algo como
sql = "Update TABLA SET campo1 = campo1.txt,campo2 = campo2.txt WHERE condicion"
lalaRecordset.Open sql, AdoConexion, adOpenDynamic, adLockOptimistic
en este caso seria recordset.open ? o .execute ?
y para el eliminar
sql = "DELETE * FROM TABLA WHERE condicion"
lalaRecordset.Open sql, AdoConexion, adOpenDynamic, adLockOptimistic
aca open ? execute ? me da error al querer eliminar registros que estan relacionados , de que otra forma puede hacerse ?
para esto se suele utilizar un recordset una conexion y un command
abres conexiones
asignas conexion a comand y recordser
'para enviar consultas
cmd.commandtext= "sentencia
'para ejecutarlas
set recordset= cmd.execute
'luego para actualizar base de datos, usease todo lo que no sean selects
conexion.execute "sentencia"
ya ta
no entendi mucho , no estoy muy familiarizado con estas conexiones como veras
lo unico que entendi es que solo se usa open para consultas de tipo select
para delete o update se usa execute
Citarnecesito agregar , modificar y poder eliminar datos
Mira te muestro OTRA forma de hacerlo...
Investiga un poco sobre el Adodc, este objeto lo podes enlazar con la base de datos, tabla, etc.
Para agregar un registro nuevo a la tabla, usas:
Adodc1.Recordset.AddNew
Para eliminar un registro, usas:
Adodc1.Recordset.Delete adAffectCurrent
Para actualizar los datos:
Private Sub CmdAceptar_Click()
Adodc1.Recordset.Update 'Actualizas los cambios
Adodc1.Refresh 'Refrescas el ado
End Sub
Y para cancelar cualquier acción:
Private Sub CmdCancelar_Click()
Adodc1.Recordset.Cancel 'Cancelando
Adodc1.Refresh 'Refrescando
End Sub
Podes tener los texbox's enlazados a cada campo de la tabla, a través del Ado.
Prueba a ver que tal, ¡S4lu2!
no conocia esa forma , lo que pasa es que en el trabajo solo trabajmos con ADO
esto seria un complemento al ADO ? o seria otra forma de enlazar base de datos con vb ?
gracias
Cita de: 4D1cTo en 13 Febrero 2008, 15:48 PM
no conocia esa forma , lo que pasa es que en el trabajo solo trabajmos con ADO
esto seria un complemento al ADO ? o seria otra forma de enlazar base de datos con vb ?
gracias
??? :xD... la seguda, existen varias formas para acceder a una base de datos e interactuar con sus registos... el ejemplo anterior, es una de ella...
Investiga un poco y te seguimos ayudando.
¡S4lu2!
Cita de: 4D1cTo en 13 Febrero 2008, 15:48 PM
no conocia esa forma , lo que pasa es que en el trabajo solo trabajmos con ADO
esto seria un complemento al ADO ? o seria otra forma de enlazar base de datos con vb ?
gracias
no te recomiendo trabajar con controles, lo que inicialmente parece una senda despejada se acaba convirtiendo en una trampa mortal
Estoy de acuerdo con no usar controles enlazados, la verdad es que son un tanto limitantes y a la hora de establecer la conexión y los enlaces es un martirio, por otra parte si quieres mostrar diferente información en un mismo objeto como un FlexGrid...
Yo también te recomiendo que te pongas a estudiar pues esto de las bases de datos no es tan sencillo como praece y si trabajas de eso pues...
En una de esas borras información importante y ...
Pero ya esta bueno de sermones que esto se trata de ayurnos:
El código que sigue yo declaro en un módulo de manera pública para luego invocarlo desde donde me venga en gana, solo ten cuidado con el alcance de tus variables:
Public MC As ADODB.Connection
Public MR As Recordset
Public XSQL As String
Ahora abrimos la conexión:
Public Function AbreBase()
Set MC = Nothing
Set MC = New ADODB.Connection
MC.Provider = "Microsoft OLE DB Provider for ODBC Drivers"
MC.ConnectionString = "Persist Security Info=False;Data Source="& TU_CONEXION & ";User ID="& TU_USUARIO & ";password=" & TU_PASSWORD" & ";Data Provider=MSDASQL.1"
MC.Mode = adModeReadWrite
MC.Open
End Function
Ahora una función para Ejecutar tus consultas SQL:
Function Ejecuta(Consulta As String)
Set MR = New Recordset
MR.Open Consulta, MC
End Function
Vale?, si quieres también la puedes hacer pública o introducirla en el Form que te venga en gana y ejecutarla localmente.
Bueno y el XSQL ya sabes para que sirve XD;
Por último:
Private Sub Buscar_Click()
XSQL = "SELECT(*) FROM tuTabla WHERE tuCondición"
Ejecuta XSQL
'?> Y esto es por si tu consulta no produce resultados no te mande error!!
If MR.EOF And MR.BOF Then
MsgBox("No se encontrarón resultados"
Else
MR.MoveFirst
While Not(MR.EOF)
TU_OBJETO = MC.Fields(0).value
TU_OBJETO = MC.Fields(1).value
TU_OBJETO = MC.Fields(...).value
TU_OBJETO = MC.Fields(N).value
End IF
End Sub
Vale espero que sigas el consejo que te hemos dado y estudies; lo del Fields(X) es para que no se te olvide que vas a identificar los campos con el número de subindice, por lo que si tu tabla tiene 50 campos y seleccionas todo usando "SELECT (*)" tendrás los Fields(0)-Fields(49), y si usas una consulta más especifica y especificas los campos que quieres seleccionar siempre serán N-1 para tus Fields a la hora de ejecutar tu código, espero que te sirva.
::)