Página 1 de 1

Mi primer script :)

Publicado: 02 Dic 2009, 09:46
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

Re: Mi primer script :)

Publicado: 02 Dic 2009, 18:04
por arkcrew
buen script amigo, gracias por publicarlo, m va a ser muy util.
Un saludo.

Re: Mi primer script :)

Publicado: 16 Dic 2009, 14:30
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