<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comentarios en: Selección de registros aleatorios en Access</title>
	<atom:link href="http://www.xperimentos.com/2007/03/27/seleccion-de-registros-aleatorios-en-access/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xperimentos.com/2007/03/27/seleccion-de-registros-aleatorios-en-access/</link>
	<description>Experiencias Profesionales...</description>
	<lastBuildDate>Sat, 01 May 2010 16:28:35 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: lcflores</title>
		<link>http://www.xperimentos.com/2007/03/27/seleccion-de-registros-aleatorios-en-access/comment-page-1/#comment-856</link>
		<dc:creator>lcflores</dc:creator>
		<pubDate>Wed, 25 Feb 2009 10:20:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.xperimentos.com/?p=126#comment-856</guid>
		<description>Hola Marga,

No me gusta mucho la opción de combinar dígitos y letras, no sólo complica la solución sino que no es una buena opción por:
&lt;ul&gt;
&lt;li&gt;El campo será texto, no numérico, las búsquedas serán más lentas.&lt;/li&gt;
&lt;li&gt;Un PC es capaz de generar números pseudo-aleatorios, no letras. Luego es  necesario generar un número y convertirlo en letra después, pero dependiendo del juego de caracteres esto no es tan sencillo, habría que generar 3 números aleatorios entre 0 y 25 y sumar una cantidad X (65 en mi PC) para evitar que aparecieran códigos ASCII raros.&lt;/li&gt;
&lt;/ul&gt;

Todo lo anterior resulta un poco complejo, y es difícil de explicarlo con detalle en un comentario. En el diseño de la tabla añade un nuevo campo &lt;i&gt;texto&lt;/i&gt;, y en el valor por defecto pon la siguiente expresión:

&lt;code&gt;=(9999999-1000000+1)*NúmAleat()+1000000&lt;/code&gt;

Ahora ya tienes un campo que generará un número aleatorio de 7 dígitos. Ahora vamos a quitar 3 dígitos y añadir 3 letras (dependiendo del juego de caracteres de tu PC puede que aparezcan cosas raras).

&lt;code&gt;(=Car(Ent((90-65+1)*NúmAleat()+65))+Car(Ent((90-65+1)*NúmAleat()+65))+Car(Ent((90-65+1)*NúmAleat()+65))+CCadena(Ent((9999-1000+1)*NúmAleat()+1000)) &lt;/code&gt;

&lt;b&gt;IMPORTANTE / CUIDADO :&lt;/b&gt;&lt;i&gt;De está formula pueden generarse registros que casualmente tengan el mismo código. Para generar códigos únicos deberías utilizar un campo autonumérico, pero en estos campos no puedes poner el valor aleatorio que tu quieras, sólo pueden ser números.&lt;/i&gt;

Para lograr lo que quieres deberías utilizar una función macro y actualizar el campo con una consulta. Esto es todavía más complejo, te adjunto un pequeño esqueleto de lo que sería una función macro, pero no está completa, faltaría comprobar que el valor es único y no existe ya en la tabla. Genera un código con 3 letras fijas y 4 números aleatorios.

&lt;code&gt;
Public Function dameNumeroAleatorio() As String
    Dim limiteSuperior As Integer
    Dim limiteInferior As Integer
    Dim num As String
    Dim letrasFijas As String
      
    limiteSuperior = 9999
    limiteInferior = 0
    letrasFijas = &quot;TEX&quot;
    
    Randomize
    num = letrasFijas &amp; CStr(Int((limiteSuperior - limite_inferior + 1) _
        * Rnd + limiteInferior))
    dameNumeroAleatorio = _
        Replace(Space(Len(CStr(limiteSuperior)) - Len(num)) &amp; num, _
        &quot; &quot;, &quot;0&quot;)
End Function
&lt;/code&gt;

Si tengo tiempo, lo documento un poco más y hago un post con algo más de detalle. 

Espero haberte ayudado,
lcflores</description>
		<content:encoded><![CDATA[<p>Hola Marga,</p>
<p>No me gusta mucho la opción de combinar dígitos y letras, no sólo complica la solución sino que no es una buena opción por:</p>
<ul>
<li>El campo será texto, no numérico, las búsquedas serán más lentas.</li>
<li>Un PC es capaz de generar números pseudo-aleatorios, no letras. Luego es  necesario generar un número y convertirlo en letra después, pero dependiendo del juego de caracteres esto no es tan sencillo, habría que generar 3 números aleatorios entre 0 y 25 y sumar una cantidad X (65 en mi PC) para evitar que aparecieran códigos ASCII raros.</li>
</ul>
<p>Todo lo anterior resulta un poco complejo, y es difícil de explicarlo con detalle en un comentario. En el diseño de la tabla añade un nuevo campo <i>texto</i>, y en el valor por defecto pon la siguiente expresión:</p>
<p><code>=(9999999-1000000+1)*NúmAleat()+1000000</code></p>
<p>Ahora ya tienes un campo que generará un número aleatorio de 7 dígitos. Ahora vamos a quitar 3 dígitos y añadir 3 letras (dependiendo del juego de caracteres de tu PC puede que aparezcan cosas raras).</p>
<p><code>(=Car(Ent((90-65+1)*NúmAleat()+65))+Car(Ent((90-65+1)*NúmAleat()+65))+Car(Ent((90-65+1)*NúmAleat()+65))+CCadena(Ent((9999-1000+1)*NúmAleat()+1000)) </code></p>
<p><b>IMPORTANTE / CUIDADO :</b><i>De está formula pueden generarse registros que casualmente tengan el mismo código. Para generar códigos únicos deberías utilizar un campo autonumérico, pero en estos campos no puedes poner el valor aleatorio que tu quieras, sólo pueden ser números.</i></p>
<p>Para lograr lo que quieres deberías utilizar una función macro y actualizar el campo con una consulta. Esto es todavía más complejo, te adjunto un pequeño esqueleto de lo que sería una función macro, pero no está completa, faltaría comprobar que el valor es único y no existe ya en la tabla. Genera un código con 3 letras fijas y 4 números aleatorios.</p>
<p><code><br />
Public Function dameNumeroAleatorio() As String<br />
    Dim limiteSuperior As Integer<br />
    Dim limiteInferior As Integer<br />
    Dim num As String<br />
    Dim letrasFijas As String</p>
<p>    limiteSuperior = 9999<br />
    limiteInferior = 0<br />
    letrasFijas = "TEX"</p>
<p>    Randomize<br />
    num = letrasFijas &amp; CStr(Int((limiteSuperior - limite_inferior + 1) _<br />
        * Rnd + limiteInferior))<br />
    dameNumeroAleatorio = _<br />
        Replace(Space(Len(CStr(limiteSuperior)) - Len(num)) &amp; num, _<br />
        " ", "0")<br />
End Function<br />
</code></p>
<p>Si tengo tiempo, lo documento un poco más y hago un post con algo más de detalle. </p>
<p>Espero haberte ayudado,<br />
lcflores</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Marga</title>
		<link>http://www.xperimentos.com/2007/03/27/seleccion-de-registros-aleatorios-en-access/comment-page-1/#comment-853</link>
		<dc:creator>Marga</dc:creator>
		<pubDate>Mon, 23 Feb 2009 18:37:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.xperimentos.com/?p=126#comment-853</guid>
		<description>Tengo una duda. (He leido el post de Klave, pero sigo igual)
Lo primero que tengo que decir es que no estoy al mismo nivel que vosotros, yo más bien estoy a nivel usuario.
Necesito crear 1000 códigos aleatorios que contengan 4 dígitos y 3 letras. En excel ya lo tengo, pero quería lograrlo en Access para poder utilizar la combinación de correspondencia con word (si se pudiera con Power point sería, lo máximo) Podeis ayudarme?¿ he intentado seguir los pasos de Klave, que aunque me parece sencillo al leerlo me pierdo. Yo sólo necesito la primera parte a Aut y Aleat....
Muchas Gracias por adelantado.</description>
		<content:encoded><![CDATA[<p>Tengo una duda. (He leido el post de Klave, pero sigo igual)<br />
Lo primero que tengo que decir es que no estoy al mismo nivel que vosotros, yo más bien estoy a nivel usuario.<br />
Necesito crear 1000 códigos aleatorios que contengan 4 dígitos y 3 letras. En excel ya lo tengo, pero quería lograrlo en Access para poder utilizar la combinación de correspondencia con word (si se pudiera con Power point sería, lo máximo) Podeis ayudarme?¿ he intentado seguir los pasos de Klave, que aunque me parece sencillo al leerlo me pierdo. Yo sólo necesito la primera parte a Aut y Aleat&#8230;.<br />
Muchas Gracias por adelantado.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Fran</title>
		<link>http://www.xperimentos.com/2007/03/27/seleccion-de-registros-aleatorios-en-access/comment-page-1/#comment-753</link>
		<dc:creator>Fran</dc:creator>
		<pubDate>Sat, 15 Nov 2008 16:46:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.xperimentos.com/?p=126#comment-753</guid>
		<description>Me ha sido de gran ayuda, era lo que estaba buscando.</description>
		<content:encoded><![CDATA[<p>Me ha sido de gran ayuda, era lo que estaba buscando.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Ariel Gutierrez</title>
		<link>http://www.xperimentos.com/2007/03/27/seleccion-de-registros-aleatorios-en-access/comment-page-1/#comment-748</link>
		<dc:creator>Ariel Gutierrez</dc:creator>
		<pubDate>Thu, 13 Nov 2008 16:27:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.xperimentos.com/?p=126#comment-748</guid>
		<description>Tengo una base de datos de 4,500 estudiantes de 40  carreras diferentes, deseo obtener una muestra aleatoria de 10 estudiantes por carrera, la base de datos que tengo esta en Excell, como le puedo hacer para que excell me de esa selección aleatoriamente.

Gracias.</description>
		<content:encoded><![CDATA[<p>Tengo una base de datos de 4,500 estudiantes de 40  carreras diferentes, deseo obtener una muestra aleatoria de 10 estudiantes por carrera, la base de datos que tengo esta en Excell, como le puedo hacer para que excell me de esa selección aleatoriamente.</p>
<p>Gracias.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Selección de registros aleatorios en Access &#171; XperimentoS</title>
		<link>http://www.xperimentos.com/2007/03/27/seleccion-de-registros-aleatorios-en-access/comment-page-1/#comment-565</link>
		<dc:creator>Selección de registros aleatorios en Access &#171; XperimentoS</dc:creator>
		<pubDate>Fri, 18 Apr 2008 15:35:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.xperimentos.com/?p=126#comment-565</guid>
		<description>[...] Nos hemos mudado a www.xperimentos.com, puedes continuar leyendo este post en este enlace. [...]</description>
		<content:encoded><![CDATA[<p>[...] Nos hemos mudado a <a href="http://www.xperimentos.com" rel="nofollow">http://www.xperimentos.com</a>, puedes continuar leyendo este post en este enlace. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: klave</title>
		<link>http://www.xperimentos.com/2007/03/27/seleccion-de-registros-aleatorios-en-access/comment-page-1/#comment-112</link>
		<dc:creator>klave</dc:creator>
		<pubDate>Wed, 28 Mar 2007 13:08:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.xperimentos.com/?p=126#comment-112</guid>
		<description>A mi me ha pasado lo mismo con alguna consulta, usando access y tambien alguna vez con SAS (herramienta estadística), y detecté que era por el SQL (aun sigo sin entender porqué), algo tan tonto como usar un group by en un select distinct, devolvía diferentes registros o diferente número. Quitabas el distinct y la query se volvia estable :-D</description>
		<content:encoded><![CDATA[<p>A mi me ha pasado lo mismo con alguna consulta, usando access y tambien alguna vez con SAS (herramienta estadística), y detecté que era por el SQL (aun sigo sin entender porqué), algo tan tonto como usar un group by en un select distinct, devolvía diferentes registros o diferente número. Quitabas el distinct y la query se volvia estable <img src='http://www.xperimentos.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: lucas</title>
		<link>http://www.xperimentos.com/2007/03/27/seleccion-de-registros-aleatorios-en-access/comment-page-1/#comment-111</link>
		<dc:creator>lucas</dc:creator>
		<pubDate>Wed, 28 Mar 2007 12:45:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.xperimentos.com/?p=126#comment-111</guid>
		<description>Interesante... aunque yo descubrí hace tiempo que el access es aleatorio en sí mismo!!!

La última vez que usé access con un volumen de datos medio (100.000 registros en una tabla) ejecutaba la misma consulta varias veces seguidas y cada vez obtenía un número diferente (supongo que aleatorio) de registros.

Afortunadamente la técnica descrita por klave es válida para otros SGBD</description>
		<content:encoded><![CDATA[<p>Interesante&#8230; aunque yo descubrí hace tiempo que el access es aleatorio en sí mismo!!!</p>
<p>La última vez que usé access con un volumen de datos medio (100.000 registros en una tabla) ejecutaba la misma consulta varias veces seguidas y cada vez obtenía un número diferente (supongo que aleatorio) de registros.</p>
<p>Afortunadamente la técnica descrita por klave es válida para otros SGBD</p>
]]></content:encoded>
	</item>
</channel>
</rss>
