rectangulo - Hacer una consulta Sí o No en MATLAB
rectangulo matlab (2)
¿Cuál es el problema exactamente? El siguiente script de prueba (llamado scriptrecurse.m) funciona como se esperaba (tenga en cuenta que no necesita los paréntesis ()
para llamar a un script).
X = randn(3);
disp(''X = '')
disp(X)
x = input(''Go again? '',''s'');
if strcmpi(x,''y'')
scriptrecurse
else
fprintf(''Bye!/n'')
end
Por ejemplo:
>> scriptrecurse
X =
1.1808 0.4716 -1.4529
0.1729 2.0474 -0.6343
0.1747 -0.6437 -1.1136
Go again? y
X =
-0.8910 -0.2479 0.0851
1.7106 2.0659 0.6639
-0.5174 -0.4350 0.0301
Go again? n
Bye!
Escribí un script en MATLAB, donde estoy recuperando filas y columnas de una tabla basada en la cláusula WHERE. Hasta ahora logré recuperar los datos de la tabla de la base de datos.
El problema es que me gustaría permitir que el usuario tenga la opción de ejecutar otra búsqueda para recuperar otro conjunto de datos.
Este es mi código hasta ahora que tengo y el script se llama ''searchpdb''.
pdbSearch = input(''Enter your PDB Code: '', ''s'')
curs = fetch(exec(conn, [''SELECT * FROM cath_2_wo_dup WHERE pdbcode = '' '''''''' pdbSearch '''''''']));
fprintf(''Results Successful! /n'');
results = curs.Data % prints the data out
% ----------------------
% User option to search again
% -----------------------
goAgain = input(''Would you like to search for another pdb?'', ''s'');
% if (goAgain = ''Yes'')
if strcmp(goAgain, ''Yes'')
searchpdb(); %runs this script again.
elseif strcmp(goAgain, ''No'')
fprintf(''/nBye!/n'');
end
He intentado usar ''questdlg'', pero no muestra los resultados de los datos en la tabla después de que le he dado la opción al usuario para que se ejecute nuevamente.
Estoy haciendo esto de la manera incorrecta, ¿o hay otra forma eficiente de hacerlo? ¿Debería la opción de ejecutar el script volver a estar en otro script?
Bueno, funcionará, pero recomendaría usar una cláusula while
lugar de llamar al script recursivamente:
goAgain = true;
while goAgain
pdbSearch = input(''Enter your PDB Code: '', ''s'');
curs = fetch(exec(conn, [''SELECT * FROM cath_2_wo_dup WHERE pdbcode = '' '''''''' pdbSearch '''''''']));
fprintf(''Results Successful! /n'');
results = curs.Data % prints the data out
% ----------------------
% User option to search again
% -----------------------
res = input(''Would you like to search for another pdb?'', ''s'');
goAgain = isequal(upper(res),''YES'');
end
Simplemente se vuelve más claro para el lector de tu código. Con solo echar un vistazo a las primeras líneas de este nuevo código, uno puede adivinar que:
- Hay un ciclo: algo sucede muchas veces.
- Hay una condición de detención llamada
goAgain
.