Muy buenos dias a todos los programadores y estudiantes.
Mi consulta es esta, tengo una base BD con varias tablas, tabla1, tabla2, tabla3.
Cada tabla con varios campos.
En mi form tenog dos edit,
edit1,text para introducir numero
edit2.text para ingresar nombre o palabras
Busco como poder concatenar, agregarle al contenido de un campo de una tabla lo que tengo en un edit. (edit1.text)
tabla1 tiene estos campos: T1campo1, T1campo2, T1campo3, todos de tipo string.
Tengo el código que hace una búsqueda en tabla1, cuando encuentra se cumple la condición agrega el contenido del edit1.text al campo T1campo3.
La condición es que el contenido del campo T1campo2 debe ser igual al contenido del edit2.text, si es asi, entonces concatenar el contenido del campo T1campo3 con lo que hay en el edit1.text.
Pero si el T1campo3 ya tenia algo, mi codigo lo sobrescribe, y eso no es lo que busco, yo deseo que concatene, que le agregue al costado.
El campo T1campo3 solo almacenaría una lista de numeros.
[pascal]
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('Update tabla1');
query1.SQL.Add('set T1campo3= ' + Edit1.text );
query1.SQL.Add('where T1campo2= ' + quotedstr(Edit2.text) );
query1.ExecSQL;
[/pascal]
alguna idea de como hacerlo.....

concatenar el contenido de un registro con el contenido de un edit
Started by
homero72
, Feb 23 2013 09:21 AM
5 replies to this topic
#1
Posted 23 February 2013 - 09:21 AM
#2
Posted 23 February 2013 - 11:12 AM
Saludos.
No indicas la BD que estas atacando, para algunas BD para concatenar usan el símbolo "+" otras "||" dependerá del motor de BD.
Pudiera ser algo como esto:
[pascal] query1.Close;
query1.SQL.Clear;
query1.SQL.Add('Update tabla1');
query1.SQL.Add('set T1campo3 = T1campo3 + ' + Edit1.text ); <--- Si aplica
query1.SQL.Add('set T1campo3 = T1campo3 || ' + Edit1.text ); <--- Si aplica
query1.SQL.Add('where T1campo2= ' + quotedstr(Edit2.text) );
query1.ExecSQL;[/pascal]
Prueba y nos avisas!
No indicas la BD que estas atacando, para algunas BD para concatenar usan el símbolo "+" otras "||" dependerá del motor de BD.
Pudiera ser algo como esto:
[pascal] query1.Close;
query1.SQL.Clear;
query1.SQL.Add('Update tabla1');
query1.SQL.Add('set T1campo3 = T1campo3 + ' + Edit1.text ); <--- Si aplica
query1.SQL.Add('set T1campo3 = T1campo3 || ' + Edit1.text ); <--- Si aplica
query1.SQL.Add('where T1campo2= ' + quotedstr(Edit2.text) );
query1.ExecSQL;[/pascal]
Prueba y nos avisas!
#3
Posted 23 February 2013 - 12:43 PM
Gracias ...
bueno, la BD en acces 2000
probe el codigo, pero uno me sale este error,
....gENERAL SQL ERROR.... uso de barras verticales no valido en la expresion de consulta
y probe con la otra linea...
lo que me hace es SUMAR el valor que ya estaba en ese campo t1campo3 mas valor del edit1, y yo solo quiero agregarlo, tal ves separado por un espacio, o un punto y coma
para que quedara algo asi VALOR VIEJO, VALOR NUEVO, VALOR MAS NUEVO,.......... y asi sucesivamente, cada nuevo valor del edit1 ire agregando a este campo T1campo3.
otra cosa que me di cuenta que si el campo t1campo3 esta vacio no me graba el nuevo valor del edit1.
bueno, la BD en acces 2000
probe el codigo, pero uno me sale este error,
delphi
query1.SQL.Add('set T1campo3 = T1campo3 || ' + Edit1.text ); <--- Si aplica
....gENERAL SQL ERROR.... uso de barras verticales no valido en la expresion de consulta
y probe con la otra linea...
delphi
query1.Close; query1.SQL.Clear; query1.SQL.Add('Update tabla1'); query1.SQL.Add('set T1campo3 = T1campo3 + ' + Edit1.text ); <--- Si aplica query1.SQL.Add('where T1campo2= ' + quotedstr(Edit2.text) ); query1.ExecSQL;
lo que me hace es SUMAR el valor que ya estaba en ese campo t1campo3 mas valor del edit1, y yo solo quiero agregarlo, tal ves separado por un espacio, o un punto y coma
para que quedara algo asi VALOR VIEJO, VALOR NUEVO, VALOR MAS NUEVO,.......... y asi sucesivamente, cada nuevo valor del edit1 ire agregando a este campo T1campo3.
otra cosa que me di cuenta que si el campo t1campo3 esta vacio no me graba el nuevo valor del edit1.
#4
Posted 23 February 2013 - 01:18 PM
En Access se utiliza el símbolo "&" para concatenar strings:
Saludos.
Select campo1 & "-" & campo2 from tabla
Saludos.
#5
Posted 23 February 2013 - 07:22 PM
ok... gracias, pero... como usaria esa linea aca dentro de este codigo que tengo
o simplemente reemplazaria el simbolo + por el simbolo &....
ahora no estoy en mi computadora, si lo estuviera lo iba a probar, estoy en un ciber cafe, pero ahora cuando regrese a casa probare cambiando de simbolos...
En caso de que no sea asi, volvere mañana para ver si alguien me dice como seria...
gracias a todos..
saludos
delphi
query1.Close; query1.SQL.Clear; query1.SQL.Add('Update tabla1'); query1.SQL.Add('set T1campo3 = T1campo3 + ' + Edit1.text ); <--- Si aplica query1.SQL.Add('where T1campo2= ' + quotedstr(Edit2.text) ); query1.ExecSQL;
o simplemente reemplazaria el simbolo + por el simbolo &....
ahora no estoy en mi computadora, si lo estuviera lo iba a probar, estoy en un ciber cafe, pero ahora cuando regrese a casa probare cambiando de simbolos...
En caso de que no sea asi, volvere mañana para ver si alguien me dice como seria...
gracias a todos..
saludos
#6
Posted 24 February 2013 - 09:30 AM
bien... bien... perfecto, GRACIASSSSS......
me funciono, me concateno con el simbolo &, quedando el codigo asi:
En la BD, tabla1 campo T!campo3 va concatenando, un valor al lado del otro, y separado por un gion medio, algo asi 100 - 102 - 103 - 108
me funciono, me concateno con el simbolo &, quedando el codigo asi:
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('Update datopersona');
//query1.SQL.Add('set denuncia = ' + Edit1.text );
query1.SQL.Add('set denuncia = denuncia & ' + '-' + Edit1.text );
query1.SQL.Add('where nombre = ' + quotedstr(Edit2.text) );
query1.ExecSQL;
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('Update tabla1');
query1.SQL.Add('set T1campo3 = T1campo3 & ' + ' - ' + Edit1.text ); <--- Si aplica
query1.SQL.Add('where T1campo2= ' + quotedstr(Edit2.text) );
query1.ExecSQL;
En la BD, tabla1 campo T!campo3 va concatenando, un valor al lado del otro, y separado por un gion medio, algo asi 100 - 102 - 103 - 108