
Ya comenzamos
#1
Escrito 03 abril 2009 - 10:33
Si alguien tiene un libro que me pueda facilitar para estudiarle el fin de semana
ya estoy viendo los detalles del diseño etc etc
Ahora si alguien me puede decir como conecto a la base de datos ??
tengo que conetar a MySql
para comenzar a hacer cosillas
Root
#2
Escrito 03 abril 2009 - 10:43
Ahora si
Si alguien tiene un libro que me pueda facilitar para estudiarle el fin de semana
ya estoy viendo los detalles del diseño etc etc
Ahora si alguien me puede decir como conecto a la base de datos ??
tengo que conetar a MySql
para comenzar a hacer cosillas
Root
Tanto como un libro no conozco, pero esencialmente para la conexión a la Base de Datos necesitas 3 cosas (que es como yo lo haría...):
1. Descargar e instalar el driver de MySQL para el ODBC puede ser desde aquí
2. Configurar un DSN para la conexión: ayuda
3. Utilizar componentes ADO desde Delphi (TADOConnection, TADOQuery y TADOTable)
Puedes comenzar y en la medida que surjan dudas con gusto te las ampliamos

Saludos,
P.D. Aclaro que no es la única manera de hacerlo, insisto, es como yo lo he hecho...

#3
Escrito 03 abril 2009 - 11:44
Es habitual recomendar este libro para comenzar La cara oculta de Delphi 4. Apesar de que se trata de una versión muy vieja de Delphi, algunos temas siguen vigentes como son el manejo de componentes para acceso a datos (rejillas, listas desplegables, cajas de edición, etc).
Puedes complementarlo con lo que te ha recomendado Fenareth para conectarte a MySql.
[Edito: Ya veo que lo que buscas es información específica acerca de conexión con MySql y no propiamente de Delphi. Siendo así, entonces ignora esta respuesta ]
Saludos
#4
Escrito 03 abril 2009 - 12:40
por ejemplo voy a hacer una ventana de acceso
ya saben user y pass el user lo kiero poner en un Tcombobox
y el pass en un Tedit necesito cuatro querys
uno para que haga un conteo de los usuarios que me de un numero "N"
luego mediante un loop valla agregando al listado
de usuarios y pss un additem al Tcombobox
un numero "N" de veces cuando "N" es el conteo de usuarios
uno que recupere el listados de los users
Eso en el cargado de la pagina
luego mediante un TButton
que tome el nombre del usuario del Tcombobox
que lo busque en la base y que me responda con el pass
de hay evaluar si es = cargue otra ventana y descargue esta,
ELSE
msgbox que diga looser no te sabes ni tu password
Esta bien mi idea o esta demasiado LOCA
Se que es mucho pedir pero pss en base a esto ya me puedo dar una idea de como estructurar las consultas siguientes a la base de datos
#5
Escrito 03 abril 2009 - 12:53

Si utilizas la propiedad Text de SQL es cosa de que sobreescribas la sentencia anterior con una nueva, si no, tendrías que limpiar primero la consulta y después asignarle otra sentencia, pero en ambos casos lo haces con un solo TQuery...
Yo sugeriría que en al mostrar tu formulario de acceso ejecutes la primera consulta para que cargue a todos los usuarios.
Después de que se ha seleccionado al usuario que ingresará y hasta después de que se ha escrito un password, ejecutar la consulta de comparación entre ambos valores, ésto podría ser ejecutado en el botón de acceso que mencionas...
Espero haberme explicado :$, si no, pregunta con confianza...
Saludos

#6
Escrito 03 abril 2009 - 01:03
Para llenar el ComboBox con el nombre del usuario puedes usar el objeto TDBLookupComboBox.
Pegas un componente Query (si usas ADO sería ADOQuery) y en su propiedad SQL escribes esto.
SELECT * FROM Usuarios
Pegas un componente TDataSource y un componente TDBLookUpComboBox que están en el tab DataControls.
El DataSource1 lo ligas al ADOQuery1 en su propiedad DataSet.
En el DBLookUpComboBox1 asignas las propiedades
ListSource = DataSource1
KeyField = Campo llave, puede ser el mismo campo usuario
ListField = Campo que se mostrará, usuario
Y ya está listo para mostrar la lista de usuarios en el combobox.
Salud OS
#7
Escrito 03 abril 2009 - 01:08
la idea andava herrada
como dicen
mucho $·&%$%/ brinco en un terreno tan planito
pero la pregunta sigue idem
como le digo que haga el query
digo la sentencia de sql seria mas o menos asi
select usuario from usuario
pero como le digo este es el query y el resultado
ponlo como los items
#8
Escrito 03 abril 2009 - 01:09
No se, lo veo desde mi punto de vista (novato), pero No es demasiado para algo tan sencillo?.
Me parece que sobran muchas cosas.

Saludos
#9
Escrito 03 abril 2009 - 01:17
ok
la idea andava herrada
como dicen
mucho $·&%$%/ brinco en un terreno tan planito
pero la pregunta sigue idem
como le digo que haga el query
digo la sentencia de sql seria mas o menos asi
select usuario from usuario
pero como le digo este es el query y el resultado
ponlo como los items
var i: integer; begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Text := 'select usuario from users'; Query1.Open; for i := 0 to Query1.Recordcount -1 do ComboBox1.Item.Add(Query1usuario.AsString); end;
Lo hice al vuelo, puede que tenga errores.
Saludos.
#10
Escrito 03 abril 2009 - 01:26
Yo lo haría así:
AdoQuery1.SQL.Text := 'Select CodUsuario From Usuarios WHERE Activo =True'; AdoQuery1.Active := True; While not AdoQuery1.Eof do begin Combobox1.Items.Add(AdoQuery1.Fields[0].Text); AdoQuery1.Next; end; AdoQuery1.Active := False;
Por lo menos la primera parte.
Saludos
#11
Escrito 03 abril 2009 - 04:15
ya me recupera los nombres de usuarios
ahora la pregunta es
como recupero el pass y lo asigno a una variable ???
Asegun yo va mas o menos asi
procedure TForm1.Button1Click(Sender: TObject); var user : string; var pass : string; var nombre :string; begin IF ComboBox1.Text = 'Usuario' Then Application.MessageBox( pchar( '' +#13#10+'Selecciona' +#13#10+'un usuario'), pchar(' Error '), 0+16+0+4096) else if Edit1.Text = 'Contraseña' Then Application.MessageBox( pchar( '' +#13#10+'Por favor ingresa' +#13#10+' Tu password'), pchar(' Error '), 0+32+0+4096) Else // aqui ago el query para verificar el password// AdoQuery1.SQL.Text : = 'SELECT usuario.usuario, usuario.nombre, usuario.`password` FROM usuario WHERE usuario.usuario = 'user' ' ; AdoQuery1.Active := true ; while not AdoQuery1.eof do begin IF end; END ; procedure TForm1.FormCreate(Sender: TObject);
Espero no estar tan errado
#12
Escrito 03 abril 2009 - 06:05
Lo mio no es mysql, pero esto te servirá de ejemplo, revisalo.
Es un simple login con combobox.

Saludos
Usuario... clave
Caral ... car
arroyoj ... root
Archivos adjuntos
#13
Escrito 07 abril 2009 - 09:47
ya la larte del login y me quedo " "
me falta agregar la funcion
GOTO
para que cuendo mande errores me regrese al principio de la funcion
y ahora ya solo falta el detalle
de seguir con el programa
Van a decir que soy un burro

pero
no me queda la sentencia GOTO y no puedo hacer el load unit2 ; unload unit1 ;
me pueden dar una pista ???
#14
Escrito 07 abril 2009 - 10:01
Saludos.
#15
Escrito 07 abril 2009 - 10:13
El funcionamiento general del GOTO es este:
procedure TForm1.Button1Click(Sender: TObject); label etiqueta; begin etiqueta: //Has algo if A = B then GOTO etiqueta end;
Pero seria bueno que nos dijeras que es lo que pretendes hacer, el GOTO es algo que no es muy común usar en la actualidad.
Salud OS
#16
Escrito 07 abril 2009 - 10:32
hay no se si este en lo correcto pero es que quiero en el formulario de acceso poner un contador de tiempo, por eso la idea es que no lo cierre, para que cuando cierre el programa me haga una anotación en la base de datos con la hora del cierre y el tiempo que " " trabajo el operador sobre el sistema.
y la función goto digo la idea es si no esta correcto el usuario que lo mande al inicio de la función o que es lo que recomiendan ???
digo creo lo mas común cuando programaba to era el END para terminar la función
digo se aceptan sugerencias
nomas al final le pongo en los créditos del programa
le pongo
TOOOODA la comunidad Del & '3.1416' Access
#17
Escrito 07 abril 2009 - 10:38
En efecto quiero que cuando lo valide al usuario descargue un formulario y se cargue otro.
Quiero entender que lo que quieres es que se cierre la ventana de LogIn y cargue el programa ???
hay no se si este en lo correcto pero es que quiero en el formulario de acceso poner un contador de tiempo, por eso la idea es que no lo cierre, para que cuando cierre el programa me haga una anotación en la base de datos con la hora del cierre y el tiempo que " " trabajo el operador sobre el sistema.
Para esto lo que yo sugiero es crear una tabla donde tengas numero de usuario y fecha/hora y así tendrás cuando inicio y cuando cerro la sesión, después se haría el calculo de tiempo del usuario conectado.
y la función goto digo la idea es si no esta correcto el usuario que lo mande al inicio de la función o que es lo que recomiendan ???
digo creo lo mas común cuando programaba to era el END para terminar la función
digo se aceptan sugerencias
Esto creo que está ligado con el primer parrafo, confirma si estoy entendiendo correctamente para poder ayudarte mas.
nomas al final le pongo en los créditos del programa
le pongo
TOOOODA la comunidad Del & '3.1416' Access
Seria un honor aparecer en los crédito de un sistema

Salud OS
#18
Escrito 07 abril 2009 - 12:40
lo que quiero es que se cierre el log in y que se cargue el programa.
ok la idea de la tabla es mejor asi consumo menos recursos del sistema
sip lo del end no esta ligado mira te pongo el codigo
procedure TForm1.Button1Click(Sender: TObject); var user : string; var pass : string; var nombre :string; var query : string; var iuser : Integer; begin IF ComboBox1.Text = 'Usuario' Then Application.MessageBox( pchar( '' +#13#10+'Selecciona' +#13#10+'un usuario'), pchar(' Error '), 0+16+0+4096) else if Edit1.Text = 'Contraseña' Then Application.MessageBox( pchar( '' +#13#10+'Por favor ingresa' +#13#10+' Tu password'), pchar(' Error '), 0+32+0+4096) Else // aqui ago el query para verificar el password// user := ComboBox1.Text ; pass := Edit1.text ; query := 'SELECT usuario.nombre,usuario.id_usuario FROM usuario WHERE usuario.usuario = ' + '"'+ user + '"' + ' and usuario.password = ' + '"'+ pass + '"' ; AdoQuery1.SQL.Text:=query; AdoQuery1.Active:=true; while not AdoQuery1.Eof do begin nombre := AdoQuery1.Fields[0].Text; Application.MessageBox( pchar( '' +#13#10+' Bienvenido ' +#13#10+ nombre ), pchar('Grupo Empresarial Suma'), 0+0+0); AdoQuery1.Active:=false ; End ; END;
solo que cuando paso al
AdoQuery1 a desactivado
ya no me deja cambiar la propiedad sql text para hacer el siguiente query que es asi
INSERT INTO control VALUES ('',2 ,"Ingreso al sistema" , now())
convirtiendolo a del phi
var iuser : string; // esto esta en las declaraciones query := 'Insert into control values ('',+ iuser + , + 'Ingreso al sistema", now())' ; AdoQuery1.SQL.Text := query
pero me dice
Expected ; but recived an identifier 'ingreso' at line 80
y muchos errores mas en la linea 80 entonces pense ( derepente lo hago )
por que no poner un goto a un procedimiento que haga el registro en a base de datos y
que descargue el formulario y cargue el siguiente.
ademas que pensaba usar el goto para que despues de cada error por no poner el user o el pass mandarlos a el inicio de la función
#19
Escrito 07 abril 2009 - 01:06
var iuser : string; // esto esta en las declaraciones query := 'Insert into control values ('','+iuser+' , 'Ingreso al sistema', now())' ; AdoQuery1.SQL.Text := query
Saludos.
#20
Escrito 08 abril 2009 - 08:40
no se deja el
query := 'Insert into control values ('','+iuser+', 'Ingreso al sistema', now())' ; AdoQuery1.SQL.Text := query
y en otro tema entonces lo mejor seria descargar el formulario