Vous êtes sur la page 1sur 7

DETERMINAR LA IP Y NOMBRE DE HOST DE UNA PC CON DELPHI function GetIPFromHost(var HostName, IPaddr, WSAErr: string): Boolean; // //HOW CAN

CALL IT // var Host,Ip,Err:String; // if GetIPFromHost(Host, IP, Err) then begin // // Edit1.Text := Host; Edit2.Text := IP;

// end // else // MessageDlg(Err, mtError, [mbOk], 0);

type Name = array[0..100] of Char; PName = ^Name; var HEnt: pHostEnt; HName: PName; WSAData: TWSAData; i: Integer; begin Result := False; if WSAStartup($0101, WSAData) <> 0 then begin WSAErr := Winsock is not responding.;

Exit; end; IPaddr := ; New(HName); if GetHostName(HName^, SizeOf(Name)) = 0 then begin HostName := StrPas(HName^); HEnt := GetHostByName(HName^); for i := 0 to HEnt^.h_length - 1 do IPaddr := Concat(IPaddr, IntToStr(Ord(HEnt^.h_addr_list^[i])) + .); SetLength(IPaddr, Length(IPaddr) - 1); Result := True; end else begin case WSAGetLastError of WSANOTINITIALISED:WSAErr:=WSANotInitialised; WSAENETDOWN :WSAErr:=WSAENetDown;

WSAEINPROGRESS :WSAErr:=WSAEInProgress; end; end; Dispose(HName);

WSACleanup; end; Function GetPcName:string; var arrCompName : Array[0..255] Of Char; strCompName : String; CompNameLen : Cardinal; begin CompNameLen := MAX_COMPUTERNAME_LENGTH + 1; If GetComputerName(arrCompName, CompNameLen) Then Begin SetLength(strCompName, MAX_COMPUTERNAME_LENGTH + 1); Result := StrPas(arrCompName); end; end; y asi la podemos mandar llamar: //Obtener la IP procedure TForm1.Button1Click(Sender: TObject); var Host, IP, Err: string; begin if GetIPFromHost(Host, IP, Err) then begin Edit1.Text := Host; Edit2.Text := IP;

end else MessageDlg(Err, mtError, [mbOk], 0); end; y asi la podemos mandar llamar: //Obtener el nombre de la maquina. procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text := GetPcName; end;

ELIMINAR DUPLICADOS DE UNA TABLA DE SQL Procedimiento Mysql Como Eliminar Duplicados en una tabla Supongamos que en una tabla llamada tdatos existen 5 campos los cuales serian: vclavecta vnombrecta vappat vapmat vnombres y hay datos duplicados o triplicados, ejemplo: vclavecta X Y Y Y A A IMSS IMSS IMSS Rios Rios Dominguez Dominguez Pedro Pedro vnombrecta vappat vapmat Perez Rios vnombres Manuel

Nosotros quisieramos que fisicamente en la tabla solo quedara: vclavecta X Y A IMSS Rios Dominguez Pedro vnombrecta vappat vapmat Perez Rios vnombres Manuel

Entonces tendriamos que ejecutar la siguiente consulta:

DELETE t1 FROM txdatos AS t1 JOIN txdatos AS t2 ON t1.idatoid>t2.idatoid AND t1.vclavecta=t2.vclavecta and t1.vappat=t2.vappat and t1.vnombrecta=t2.vnombrecta and t1.vapmat=t2.vapmat and t1.vnombres=t2.vnombres; y si es necesario regenerar el id habria que hacerse: haciendo un mysqldump de la tabla, borrandola con drop table y despus importandola de nuevo, no se recomienda regenerar los auto_increments por aquello de que se usara para relacionar con otras tablas. NOTA: El ejecutar una instruccion DELETE sobre una tabla es responsabilidad de quien la ejecuta, se recomienda hacer un respaldo antes de ejecutar dicha instruccin.

RESPALDAR BD CON MySQL Metodo (No es Necesario parar el servicio de mysql incluso si se para no funcionara el metodo) Para hacer un respaldo de MySql C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump opt listas > c:\temp\lis.sql -uroot -p Enter password: ********* Esto nos generara un archivo lis.sql en c:\temp Para Restaurar un archivo .sql C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql listas < c:\temp\lis.sql -uroot -p Enter password: ********* Notas Importantes: -Al hacer una restauracion ya sea con el metodo 1 o 2, se perderan los anteriores, por lo que es de total responsabilidad quien ejecute estas instrucciones. -En lo personal a mi me ha funcionado muy bien el metodo 2, mientras que el metodo 1 en ocasiones me ha fallado no me ha funcionado el respaldo (muy seguramente no paraba el servicio), pero igual prefiero usar el metodo 2.

Vous aimerez peut-être aussi