Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Jareth en 4 Noviembre 2006, 16:06 pm



Título: Duda
Publicado por: Jareth en 4 Noviembre 2006, 16:06 pm
Hola,me gustaria saber como se hace (en vb) para que se puedan registrar,poner un nombre de usuario y pass,y luego logearse,imagino que con base de datos,pero no se exactamente como hacerlo.
Gracias y saludos.


Título: Re: Duda
Publicado por: CeLaYa en 4 Noviembre 2006, 22:05 pm
te recomiendo que primero veas temas relacionados con BD

Conectarse a una BD de Access en VB
http://foro.elhacker.net/index.php/topic,94263.msg442391.html#msg442391


aunque para mi seria mejor guardar la contraseña cifrada en un archivo


Título: Re: Duda
Publicado por: Jareth en 4 Noviembre 2006, 22:56 pm
Si sobre base de datos pues se algunas cosas,el problema es que no se como añadir el contenido de un textbox(por ejemplo el user)a una base de datos(esto seria cuando uno se registra),leerlo si que se.
Otra cosa si tu me dices lo de guardarlo en un archivo cifrado,como seria?
Gracias y saludos.


Título: Re: Duda
Publicado por: CeLaYa en 6 Noviembre 2006, 16:53 pm
primero para guardar datos en una BD lo haces con addnew

dim Bd as database
dim Tb as database

set bd = workspaces(0).opandatabase("c:\basededatos.mdb",Exclusivo, SoloLectura)
set tb = bd.openrecordset("tabla")

tb.addnew
tb!Usuario = txtUsuario.text
tb!Pass = txtpassword.text
tb.update

tb.close
bd.close

set tb = nothing
set bd = nothing


segundo
para lo del archivo, pues puedes idearte algun proceso que si tu le pones "usuario1" te guarde "A%S23$Q=WE(2" o algo asi, eso ya es custión de como lo quieras hacer.


Título: Re: Duda
Publicado por: Jareth en 6 Noviembre 2006, 19:03 pm
Ok,muchas gracias! me has ayudado mucho,de verdad gracias.
Por cierto esta todo perfecto excepto el Tb que debe ser declarado como Recordset.Funciona perfecto gracias otra vez.
Saludos.


Título: Re: Duda
Publicado por: Jareth en 6 Noviembre 2006, 19:12 pm
Hola,lo siento,tengo otra duda,ahora como hago para comprobar que existe,si existe que por ejemplo vaya al siguiente form,esque se buscar y mostrar los datos pero no se como mirar si existen.
Gracias y saludos.

EDITADO:Perdon ya me salió,xD.Lo pongo por si otro tiene el mismo problema(si esta mal decidmelo):
Código:
Dim bd As Database
Dim tb As Recordset

Set bd = Workspaces(0).OpenDatabase("C:\Documents and Settings\USER\Escritorio\bd1.mdb")
Set tb = bd.OpenRecordset("tabla1")

 If tb!User = Text1.Text And tb!pass = Text2.Text Then
 Form2.Hide
 Form3.Show
Else
MsgBox ("Datos incorrectos")
End If


Título: Re: Duda
Publicado por: CeLaYa en 7 Noviembre 2006, 00:34 am
pues lo haces con una consulta SQL, un ejemplo:

Dim bd As Database
Dim tb As Recordset

Set bd = Workspaces(0).OpenDatabase("C:\Documents and Settings\USER\Escritorio\bd1.mdb")
Set tb = bd.OpenRecordset("SELECT * FROM tabla1" & _
                                        "WHERE User = '" & text1.text & "' " & _
                                         "AND Pass = " & text2.text & "';")

If tb.Recordcount > 0 then ' Encontro por lo menos un registro
     Unload me
     ElotroForm.show
end if

'No olvides cerrar la BD y liberar la memoria
tb.close
bd.close
set tb = nothing
set bd = nothing


Título: Re: Duda
Publicado por: Jareth en 7 Noviembre 2006, 20:35 pm
Gracias CeLaYa,de todas formas encontré otra manera pero probaré la tuya. ::)
Gracias y Saludos.


Título: Re: Duda
Publicado por: Jareth en 8 Noviembre 2006, 18:57 pm
Hola,tu code me da error en la SQL,de todas formas el mio va,pero por ejemplo cuando en el primer form me registro y los datos se añaden,cuando voy al form2 que es donde login,los datos recien puestos no los reconoce,pero si cierro el programa y lo ejecuto luego si.Y yo quiero que nada mas registrarte hagas login sin necesidad de cerrar el programa.
Gracias y saludos.


Título: Re: Duda
Publicado por: CeLaYa en 8 Noviembre 2006, 21:15 pm
creo que el error pueda ser que me falto un espacio en la consulta SQL

Set tb = bd.OpenRecordset("SELECT * FROM tabla1" & _
 "WHERE User = '" & text1.text & "' " & _
 "AND Pass = " & text2.text & "';")

lo correcto seria:
Set tb = bd.OpenRecordset("SELECT * FROM tabla1 " & _
 "WHERE User = '" & text1.text & "' " & _
 "AND Pass = " & text2.text & "';")

y para eso de que no te reconoce los datos, porque no pones el codigo que tienes y vemos que se puede hacer


Título: Re: Duda
Publicado por: Jareth en 8 Noviembre 2006, 21:25 pm
Código:
Private Sub Command1_Click()
Dim bd As Database
Dim tb As Recordset

Set bd = Workspaces(0).OpenDatabase("C:\Documents and Settings\USER\Escritorio\bd1.mdb")
Set tb = bd.OpenRecordset("tabla1")


 If tb!User = Text1.Text And tb!pass = Text2.Text Then
 Unload Me
 Form3.Show
Else
MsgBox ("Datos incorrectos")
tb.Close
bd.Close
Set tb = Nothing
Set bd = Nothing

End If

El otro code(el del registro del usuario)es el tuyo.
Gracias otra vez CeLaYa.


Título: Re: Duda
Publicado por: CeLaYa en 9 Noviembre 2006, 17:32 pm
aqui el problema es que no estas haciendo una busqueda en tu BD, lo que estas haciendo es comparar el usuario que escribes en el Text1 con el registro al que actualmente esta apuntando la BD, para corregir esto puedes hacer una consulta SQL (como la que te pase) o si lo quieres pudes modificar un poco el codigo que ya tienes

Private Sub Command1_Click()
Dim bd As Database
Dim tb As Recordset

Set bd = Workspaces(0).OpenDatabase("C:\Documents and Settings\USER\Escritorio\bd1.mdb")
Set tb = bd.OpenRecordset("tabla1")

tb.moveFist ' Movemos el puntero al inicio de la tabla
'Estableces el criterio de búsqueda
tb.FindFisrt (User = '" &  Text1.Text & "'  And pass = '" & Text2.Text & "'")

if tb.NoMatch then
   ' No se encotro el usuario
   MsgBox ("Datos incorrectos")
Else
   Form3.Show
end if

tb.Close
bd.Close
Set tb = Nothing
Set bd = Nothing

End If


Título: Re: Duda
Publicado por: Jareth en 10 Noviembre 2006, 18:58 pm
Ok,muchas gracias ya lo entendi.De verdad mil gracias me ayudaste mucho CeLaYa.
Saludos.


Título: Re: Duda
Publicado por: ranslsad en 30 Junio 2007, 21:33 pm
Hola amigos, tengo una duda ya que, me sale:

Código:
Run Time Error '3251':

Operacion No Valida para este tipo de objeto

Y me sale en el error aqui:

Private Sub Command1_Click()
Dim bd As Database
Dim tb As Recordset
Set bd = Workspaces(0).OpenDatabase("C:\Documents and Settings\Administrador\Escritorio\Chat Visual Basic\Servidor\db\cuentas.mdb")
Set tb = bd.OpenRecordset("tabla1")
tb.MoveFirst ' Movemos el puntero al inicio de la tabla
'Estableces el criterio de búsqueda
tb.FindFirst (User = "" & Text1.Text & "" And pass = "" & Text2.Text & "'")

If tb.NoMatch Then
   ' No se encotro el usuario
   MsgBox ("Datos incorrectos")
Else
   Form3.Show
End If

tb.Close
bd.Close
Set tb = Nothing
Set bd = Nothing

End Sub

Bueno espero que alguien pueda ayudarme...

Salu2

Ranslsad


Título: Re: Duda
Publicado por: Jareth en 30 Junio 2007, 23:29 pm
Asi a simple vista vewo que usas doble comillas "",y no es asi,fijate en el ejemplo de CeLaYa,usa una doble comilla y un ' .No como tu que usas dos ".
Prueba cambiando eso.


Título: Re: Duda
Publicado por: ranslsad en 1 Julio 2007, 12:15 pm
Ahi me sale errores de esas mismas comillas.. :S por eso yo las cambie por "comillas" pero antes estaba esto'

Bueno.. aun no e podido resolver mi duda :(

Salu2

Ranslsad



Título: Re: Duda
Publicado por: Hans el Topo en 1 Julio 2007, 13:42 pm
se supone que tu le tienes que enviar una string... por lo tanto estas uniendo cadenas ... concepto básico de vb ...

Código:
"cadenita con chorraditas" & " en sentencias se utiliza la comilla simple para comparar strings  pepe = 'pony'  "

ahora componemos una sentencia

Código:
 
                                        'comilla simple           'comilla simple
"select manolito from manolitos where nombre='" & variablecnombre & "'"



Título: Re: Duda
Publicado por: ranslsad en 1 Julio 2007, 14:47 pm
Bueno gracias, pero ya lo e dejao a los MDB como e estado 4 dias entancado, pues el registro se guarda en txt y luego se lee normal.. asi no me lio tanto y es facil!!

Aun asi muchisimas gracias ;)

Salu2

Ranslsad