Página 1 de 1

Cierto numero de filas en una .db

Publicado: 06 Nov 2013 01:01
por Cael
Como crear un codigo que limite en el numero de filas de una .db ? :pc:

Publicado: 06 Nov 2013 01:59
por Metafunken
Hola...

Con una simple condicion.

Cuantas "filas" necesitas, 100??

Pues seria algo asi:
if (tbConsulta.Rows > nMaxFiles) then
     --Entonces haces el limitante.
     --Podria ser un booleano negativo
end
Claro, para que te funcione debes hacer una consulta previa a la base de datos, en el caso de que optes por un boolean en On Startup deberas de asignar ese valor como verdadero:

On Startup
nMaxFiles = 100;
q = "SELECT * FROM mitabla";
tbConsulta = SQLite.QueryToTable(db, q);

if (tbConsulta.Rows > nMax) then
     bPermitido = false;
else
     bPermitido = true;
end
Ya en el boton en el que vayas a ingresar datos...
if (bPermitido) then
     --Ingresas datos
else
     Dialog.Message("", "No hay mas registros");
end
Asi de sencillo.

Saludos.

Publicado: 06 Nov 2013 07:49
por rafaxplayer
Si te refieres al numero de filas que retorna una consulta , deberias usar LIMIT

Código: Seleccionar todo

"SELECT * FROM table_name LIMIT 100"

Publicado: 18 Nov 2013 08:00
por Cael
ya tenia un buen que no me conectaba ó seguía con algún proyecto, bueno gracias por las respuestas y si yo deseo solo limitar la escritura a 10 filas, les explico mas claro, con un Button creo mi .db
cupolimit = Input.GetText("CUPO")
sDatabaseFile = _SourceFolder .. "\\AutoPlay\\Docs\\".. cupolimit ..".db";

db = SQLite.Open(sDatabaseFile);
nLastError = Application.GetLastError();
if nLastError ~= SQLite.OK then
Dialog.Message("Error al abrir archivo", SQLite.GetLastErrorString());
end


SQLite.Query(db,"CREATE TABLE recargas(RecordID integer primary key, NOMBRE text, FECHA text)");


Page.Jump("CUPOS")
-----------------------------------------------------------------------
On Show

Input.SetText("CUPO", strpath1);
tabla = Label.GetText("CUPO")

nMaxFiles = 10;
q = "SELECT * FROM" .. tabla ..";
tbConsulta = SQLite.QueryToTable(db, q);
if (tbConsulta.Rows > nMax) then
     bPermitido = false;
else
     bPermitido = true;
end
------------------------------------------------------------------

En la Pagina CUPOS tengo las Input para anotar Nombre y Fecha, al momento compare, si ejemplo ya 10 filas que ya fueron ocupadas ya no acceder mas datos y negar guardado.

Button para guardado ó bloqueador de registros mayores a 10
function Escape (sSourceString)
	sSourceString = String.Replace(sSourceString, "'", "''", false);
	return sSourceString;
end


sNUMERO = Input.GetText("InputNUMERO");
sFOLIO = Input.GetText("InputFOLIO");
sSALDO = ComboBox.GetText("ComboBox_SALDO");
sVENDEDOR = Input.GetText("ASISTENTE");


if bNewRecord then
	SQLite.Query(db, "insert into recargas values(NULL, '"..sNOMBRE.."', '"..sFECHA.."')");
	nLastError = Application.GetLastError();
	if nLastError ~= SQLite.OK then
		Dialog.Message("Error: " .. nLastError, SQLite.GetLastErrorString());
	end
	
else
	SQLite.Query(db,"insert or replace into recargas values('".. nRecordID .."', '".. sNOMBRE.."', '"..sFECHA.."')");
	nLastError = Application.GetLastError();
	if nLastError ~= SQLite.OK then
		Dialog.Message("Error: " .. nLastError, SQLite.GetLastErrorString());
	end

end

if (bPermitido) then
     --Ingresas datos
else
     Dialog.Message("", "No hay mas registros");
end

SQLite.Close(db);


Ahora he tratado de acomodar los datos que me dieron, solo que en algunos lados cambian por el Valor de nombre de mi nombre que es indefinido y la cual para crear la base de datos la creo con un Button. cual seria el orden. para acomodarlo?.

Se que ando mal pero haber si me pueden solo corregir, no se si me explique lo que pretendo?

Publicado: 19 Nov 2013 07:10
por rafaxplayer
No no te has explicado... :hypno:

Publicado: 19 Nov 2013 21:24
por Cael
Lo que deseo en forma resumida es que a una tabla con nombre indefinido que guardo .. cupolimit .., a toda la que crea con nombre diferente, limitar solo la escritura a 10 filas y ya no guardar mas cambio superiores a 10.

Publicado: 19 Nov 2013 22:13
por rafaxplayer
mmm
Haber tu quieres que en una columna no se puedan ingresar mas de 10 registros?
si es asi ,algo asi:

ret=Select COUNT(Campo1) FROM TableName;

if ret[0] < 10 then

Insert into TableName (Campo1 ,campo2) Values ('valor','valor')

end

Publicado: 02 Dic 2013 04:30
por Cael
Ya casi ni he seguido intentar terminar mi proyecto, ya que trabajo en otra cosa pero bueno aqui le dedico un ratito.
FECHA = Input.GetText("FECHA")
sDatabaseFile = _SourceFolder .. "\\AutoPlay\\Docs\\".. FECHA ..".db";

db = SQLite.Open(sDatabaseFile);
nLastError = Application.GetLastError();
if nLastError ~= SQLite.OK then
Dialog.Message("Error al abrir la base de datos", SQLite.GetLastErrorString());
end


SQLite.Query(db,"CREATE TABLE recargas(RecordID integer primary key, NUMERO numeric, VENDEDOR tex)");
Si te das cuenta aquí deseo una consigna que solo me deje registrar 10 NUMEROS asi como 10 vendedores y nadamas, si desea registrar un 11, mande un mensaje de no poder registar mas datos, trato con sus ejemplos pero como ven mi nombre de la db. es indefinido.

Publicado: 02 Dic 2013 06:58
por rafaxplayer
Yo lo hari verificando numero de ingresos antes de insertar mas datos:
tDatas=SQLite.QueryToTable(db,"SELECT COUNT(VENDEDOR) AS count FROM recargas");
nLastError = Application.GetLastError();
if nLastError ~= SQLite.OK then
Dialog.Message("Error :", SQLite.GetLastErrorString());
end
nRegistros = tonumber(tData.Data[1]["count"]);
if (nRegistros >= 10) then
	Dialog.Message("Error", "No se pueden ingresar mas de 10 registros", MB_OK, MB_ICONSTOP);
	Application.ExitScript();
end