Mi primer script :)

y programas personales para otros como tu, puede que te corrijan ;)
Responder
MaTaXeToS
Mensajes: 22
Registrado: 02 Dic 2009, 09:36

Mi primer script :)

Mensaje por MaTaXeToS »

Bueno, pues les dejo aqui mi primer script.
Despues de un par de horas leyendo sobre el tema del autoIT me parecio muy interesante y empeze a probar cosas y bueno, este es el resultado.

La funcion del script es muy simple pero bueno, lo que hace es buscar en una base de datos (MySQL) el nombre que le introduces en una caja de texto, y te muestra los resultados que haya encontrado.

Código: Seleccionar todo

	#cs ----------------------------------------------------------------------------
	AutoIt Version: 3.2.10.0
	Author: MaTaXeToS
	Script Function: Busca resultados en la base de datos y los muestra por pantalla.
	#ce ----------------------------------------------------------------------------

	#include <EditConstants.au3>
	#include <GUIConstantsEx.au3>
	#include <WindowsConstants.au3>
	#include "MySQL.au3"

	Dim $UserName = "usuario"
	Dim $Password = "contraseña"
	Dim $Database = "dcot"
	Dim $MySQLServerName = "localhost"
	Dim $TableName = "partylist"

	Opt("GUIOnEventMode", 1)
	#Region ### START Koda GUI section ### Form=
	$Form1 = GUICreate("Consultar Base de datos", 500, 300, 192, 124)
	$Label1 = GUICtrlCreateLabel("Nombre a buscar", 10, 16, 100, 35)
	$Input1 = GUICtrlCreateInput("", 100, 14, 125, 25)
	$Button1 = GUICtrlCreateButton("Buscar", 230, 14, 100, 30, 0)
	$listview = GUICtrlCreateListView( "Nombre |  Apellidos |  Invitacion  |  Conectado ", 10, 50, 472, 230)

	GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
	GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
	GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
	GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
	GUICtrlSetOnEvent($Button1, "Button1Click")

	GUISetState(@SW_SHOW)
	#EndRegion ### END Koda GUI section ###
	While 1
		$nMsg = GUIGetMsg()
		Switch $nMsg
			Case $GUI_EVENT_CLOSE
				Exit
		EndSwitch
	WEnd

	Func Button1Click()
		$text = GUICtrlRead($Input1)
		If $text == "" Then
			GUICtrlSetData($Input1, "Has de escribir algo")
		Else
			if $text <> "Has de escribir algo" Then
				buscar($text)
			EndIf
		EndIf
	EndFunc

	Func buscar($text)
		GUICtrlDelete($listview)
		$listview = GUICtrlCreateListView( "Nombre |  Apellidos |  Invitacion  |  Conectado ", 10, 50, 472, 230)

		$sql = _MySQLConnect ($UserName, $Password, $Database, $MySQLServerName)
		$SQLCode = "SELECT * FROM partylist WHERE FirstName='" & $text & "'"
		$var = _Query ($sql, $SQLCode)
		$count = _CountRecords($sql,  $TableName, 'FirstName', $text)

		While NOT $var.EOF

			$nombre = $var.Fields("FirstName").value
			$apellidos = $var.Fields("LastName").value
			$invitacion = $var.Fields("InviteSent").value
			$conectado = $var.Fields("Attending").value

			if $count <> 0 Then
				GUICtrlCreateListViewItem($nombre & '|' & $apellidos & '|' & $invitacion & '|' & $conectado, $listview)
				TrayTip("Resultados","Se han encontrado " & $count & " resultado(s)",-1)
			EndIf
			$var.MoveNext

		WEnd
		if $count == 0 Then
			TrayTip("Resultados","No se han encontrado resultados con este nombre",-1)
		EndIf
		_MySQLEnd($sql)
	EndFunc
	Func Form1Close()
		Exit
	EndFunc

	Func Form1Maximize()
	EndFunc

	Func Form1Minimize()
	EndFunc

	Func Form1Restore()
	EndFunc
Base de datos:

Código: Seleccionar todo

CREATE DATABASE `dcot` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;
USE `dcot`;

CREATE TABLE IF NOT EXISTS `partylist` (
  `RecordID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Unique Record ID',
  `FirstName` varchar(30) COLLATE latin1_general_ci NOT NULL COMMENT 'First Name',
  `LastName` varchar(30) COLLATE latin1_general_ci NOT NULL COMMENT 'Last Name',
  `InviteSent` tinyint(1) NOT NULL COMMENT 'Has the invitation been sent yet?',
  `Attending` tinyint(1) NOT NULL COMMENT 'Is this person coming to the party?',
  PRIMARY KEY (`RecordID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=15 ;

INSERT INTO `partylist` (`RecordID`, `FirstName`, `LastName`, `InviteSent`, `Attending`) VALUES
(1, 'Jim', 'Nasium', 1, 1),
(2, 'Bill', 'Fold', 0, 0),
(4, 'Jen', 'Tull', 1, 0),
(5, 'Justin', 'Time', 0, 0),
(14, 'Bill', 'chupapollas', 1, 1);
La base de datos es cogida de un ejemplo que he visto por internet, ya para el proximo hare mi propia bdd xDD

Por ahora solo he hecho que busque en la columna de FirstName, ahora empezare a trabajar para intentar hacer una lista o checkbox para selecionar en que columna quieres buscar la palabra.
Estoy abierto a criticas y mejoras.

Muchas gracias.
ATT. MaTaXeToS
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Mi primer script :)

Mensaje por arkcrew »

buen script amigo, gracias por publicarlo, m va a ser muy util.
Un saludo.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Mi primer script :)

Mensaje por Ximorro »

Muy bien ya has arrancado, y fuerte, porque para ponerse directamente con bases de datos hay que ser valiente.

El código es sencillito pero como dices ahora a ampliar, seguro que acaba siendo algo grande.

Quizás podrías sacar el TrayTip("Resultados",... fuera del while, y quitar esas funciones de eventos que tienes vacías (a menos que tengas planeado usarlas)

Por cierto, al margen... ¿el apellido del segundo Bill es resultado de alguna frustración con el programa? :smt003
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Responder