Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   AyUda !!EXAMEN de SQL (https://www.clubdelphi.com/foros/showthread.php?t=10675)

ricardocid 26-05-2004 07:10:25

AyUda !!EXAMEN de SQL
 
Por favor necesito que me ayuden, el viernes tengo que rendir un examen en el trabajo de delphi, me dijieron que mas o menos en lo que consiste y necesito que me ayuden. Trabaje en VisualBasic durante mucho tiempo perfectamente y el traslado a Delphi se me esta complicando.
En primer termino trabaja sobre tablas planas EJ
TABLA: PAISES
REGISTROS
*nombre(campo clave)
*capital
*poblacion
*area
*densidad

Debo poder ingresar un registro si este no existe anteriormente.
Yo tengo pensado hacer
sentencia SQL select nombre from paises where nombre = textbox
luego comparar el resultado
si es nulo
no permito la edicion
si no es nulo
permito la edicion

El problema que al no conocer bien la estructura del codigo no me sale

MODIFICAR, ELIMINAR Y DEMAS YA LO SE HACER PERO NO ME SALE EJECUTAR LA SENTENCIA. Esto es lo que intente

busqueda := t_pais.Text;
QConsulta.Close;
QConsulta.SQL.Text:='Select Nombre from paises where Nombres = : busqueda & ;';
QConsulta.Open;
result :=QConsulta.fields[0].asstring;

POR FAVOR AYUDENME LO MAS EXPLICITO Y DETALLADO QUE PUEDAN SE LOS VOY AGRADECER YA QUE ES POR TRABAJO.
Gracias

marcoszorrilla 26-05-2004 08:00:28

Te falta decir con que componentes te conectas y a qué base de datos. Access, Dbase, Paradox?

Código SQL [-]
busqueda := t_pais.Text;
QConsulta.Close;
QConsulta.SQL.Text:='Select Nombre from paises where Nombres = ' +QuotedStr(Edit1.Text);
QConsulta.Open;
result :=QConsulta.fields[0].asstring;

Lo que te pongo puede ser una solución fácil.

Un Saludo.

weke 26-05-2004 08:18:09

¡Buenas!

Yo para comprobar si existe un registro o no, antes de insertarlo, lo hago sin utilizar una consulta SQL, de la siguiente manera:
Código:

        esta:=Table1.FindKey([campo_calve_primaria, campo_calve_primaria]);
        if (esta = false) then
//inserto el elemento

Nota: 'esta' es una variable boolean, que no es necesaria si lo haces de la siguiente forma:
Código:

        if (Table1.FindKey([campo_calve_primaria, campo_calve_primaria]) = false) then
//inserto el elemento

La cuestión es que en el 'FindKey' introduces el campo o campos que forman la clave primaria para que busque en la tabla, si existe te devuelve cierto y si no existe de devuelve falso.

Espero que te sirva.

Saludos.:)

sanxpue 26-05-2004 18:54:02

Nada mas falta
 
Bueno las respuestas anteriores son unas de varias opciones,

Tambien puedes hacerlo con Locate
o levantando una excepcion y mandando un mensaje diciendoles
ejele ejele ese ya esta

osease ya tienes 4 opciones :D

ricardocid 26-05-2004 19:49:24

mas ayuda!!!!
 
gRACIAS POR responder, ese tema ya lo solucione gracias a ustedes, ahora tengo que validar los campos,
*nombre(campo clave)(LETRAS)
*capital(LETRAS)
*poblacion(NUMEROS)
*area(NUMEROS)
*densidad(NUMEROS)

YO EN VISUAL LO HACIA ASI, EN DELPHI COMO ES?
Private Sub c_devuelto_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then c_devuelto2.SetFocus
cadena = "0123456789" + Chr(8) 'chr(8) = delete, es decir admitimos borrar
If InStr(cadena, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub

MUCHAS GRACIAS Y POR FAVOR SIGANME AYUDANDOME

ricardocid 26-05-2004 21:20:06

Otra consulta mas
 
QConsulta.Close;
QConsulta.SQL.Text:='Select Name, Capital, Continent, Area, Population from country where Name = ' + QuotedStr(t_pais.Text);
QConsulta.Open;

¿Como hago para poner el nambre en un text, capital en otro text, area en otro text y population en otro text,
Aclaro que el nombre por el cual hagola busqueda es campo unico, por lo tanto me va a devolver u solo registro. Yo en visual usaba
capital.text=rs!Capital,
En delphi ¿como tengo que hacer?
Gracias por ayudarme

marcoszorrilla 26-05-2004 22:19:22

Código SQL [-]
Capital.Text:=Field[0].AsString;

El 0 tienes que sustituirlo por el lugar que ocupe el campo en el Sql empezando por 0 hast x -1.

Si creas campos persistentes:
Entonces podrías hacer:

Código SQL [-]
Capital.TExt:=Quer1Micampo.Value;

Un Saludo.

guillotmarc 26-05-2004 22:29:51

Otra opción.

Capital.Txt = Query1.FieldByName('Capital').AsString;

Saludos.

ricardocid 26-05-2004 22:49:09

Otra consulta mas
 
La de asigncion sobre una sentencia SQL ya lo solucione ahora me falta:

El update en delphi como lo toma?

QConsulta.Close;
QConsulta.SQL.Text:='update country set Capital := t_capital.Text where Capital = ' + QuotedStr(t_pais.Text);
QConsulta.Open;

tengo que actualizar el campo capital con lo ingresado en un text, y lo busca con lo ingresado en el textpais, ese vendria a ser el campo unico
¿COMO SERIA LA SENTENCIA?

NO ME RESPONDIERON LA CONSULTA SOBRE EL KEYPRESS EN DELPHI, POR FAVOR AYUDENME YA QUE ES PARA ENTRAR A UN LABURO

__cadetill 26-05-2004 23:34:43

Código Delphi [-]
QConsulta.SQL.Text := 'update country set Capital = ' + 
         QuotedStr(t_capital.Text) + ' where Capital = ' + QuotedStr(t_pais.Text);
QConsulta.ExecSQL;

marto 27-05-2004 00:18:36

Hola compañero,

veo que eres nuevo y que además andas un poquillo apurado :D :D
De todas maneras seria de agradecer que le echases un vistazo a la guia de estilo. Para empezar, podrías hacer un par de cosas, pon tu codigo entre etiquetas "[code]" o "[delphi]" para que se vea bien el codigo y abre un hilo nuevo para cada consulta. Piensa que así, si otro compañero tiene la misma duda, la podrá encontrar más facilmente en la herramienta de búsqueda ;)

marto 27-05-2004 00:23:52

Cita:

Empezado por ricardocid
NO ME RESPONDIERON LA CONSULTA SOBRE EL KEYPRESS EN DELPHI, POR FAVOR AYUDENME YA QUE ES PARA ENTRAR A UN LABURO

No te voy a traducir el código, pero mirando en la ayuda lo encontrarás fácil. Búsca lo siguiente:

OnKeyPress ->fíjate en los parámetros
Pos -> en lugar de InStr

suerte ;)


por cierto... no hace falta que insistas más en lo urgente que es... piensa que aquí nadie pregunta por gusto ;)

ricardocid 27-05-2004 04:49:20

Sobre el KeyPress
 
Estuve viendo la ayuda y sinceramente no es nada clara.
Por lo que interprete arme esta sentencia que me da error:
Código Delphi [-]
 
If KeyAscii = 13 Then 
  c_devuelto2.SetFocus
cadena := '0123456789' + Chr(8); 
If InStr(cadena, Chr(KeyAscii)) = 0 Then
  KeyAscii := 0;
Yo lo que tengo que hacer es que en el text solo me deje escribir numeros, agradeceria si alguien se tomara el tiempo de escribir el codigo
Con respecto a lo del apuro, pido disculpas. Y al ser nuevo en este foro no sabia algunas de las reglas con las cuales se manejan
Gracias por responder.

Agar23 27-05-2004 08:18:01

Código Delphi [-]
procedure TForm.KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in (['0'..'9',#8])) then key:=#0;
end;

marto 27-05-2004 09:52:00

Cita:

Empezado por ricardocid
Con respecto a lo del apuro, pido disculpas. Y al ser nuevo en este foro no sabia algunas de las reglas con las cuales se manejan

Bueno, tranquilo, todos hemos sido nuevos, la gracia está en no tropezar dos veces con la misma piedra.

Por cierto, he editado tu mensaje para poner el código entre etiquetas "[delphi]", ¿ves la diferencia?....


La franja horaria es GMT +2. Ahora son las 23:14:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi