SQL - Rutina SQL

 
Vista:

Rutina SQL

Publicado por Jose Rios (5 intervenciones) el 03/02/2008 21:15:48
Tengo una base de datos que deseo estar modificando...seguido ... es una base de datos que puedo abrir en paradox o dbase...
Necesito PROGRAMAR UNA RUTINA EN SQL para elminar unos registros que cumplan cierta condicion, por ejemplo:
Los registro que en el campo (FOLIOS) cumplan la condicion de inicio de folio A, este campo tiene registro que son un consecutivo de folios de acuerdo a la serie A, pero como para poderloos eliminar correctamente con el sistema de aplicacion, necesito reemplazar el campo folios por espacio para que el sistema de aplicacion lo elimine al encontrarlo dañado o incompleto...
debe de ser una rutina sencilla, Agradecere alguna ayuda por este medio...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Rutina SQL

Publicado por Leo (16 intervenciones) el 05/02/2008 00:24:09
Reemplazar el campo folio por espacio

update nombreTabla
set FOLIOS = " "

Eliminar según condición

delete from nombreTabla
where (condicion)

Por ejemplo, delete from nombreTable where FOLIOS = "B", borra los registros con ese valor en el campo.

Suerte
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rutina SQL

Publicado por Jose Rios (5 intervenciones) el 05/02/2008 19:05:01
Gracias por la informacion,:

La rutina que estoy usando es:

UPDATE FA0TY1
SET CVE_ART = " "
WHERE CVE_DOC = "R0099"

lo que me falta es que el cambio se haga en todos los folios que empiezen con R

Te agradecere me apoyes en esta ultima condicion...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rutina SQL

Publicado por Isaias (5072 intervenciones) el 06/02/2008 18:05:53
No mencionas que base estas ocupando, si fuera SQL SERVER, puedes hacerlo asi:

UPDATE FA0TY1
SET CVE_ART = " "
WHERE LEFT(CVE_DOC,1)= "R"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rutina SQL

Publicado por Leo (16 intervenciones) el 06/02/2008 22:53:30
Bueno, la verdad yo solo uso PostgreSQL y no me fije si está implementado, pero según la norma del 92
tiene que estar like. Puedes usar where nombrefolio is like "R%"
Suerte
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rutina SQL

Publicado por Jose Rios (5 intervenciones) el 07/02/2008 05:40:14
Con las 2 instrucciones me manda el error INVALID USE OF KEYWORD

Estoy usando un DATABASE DESKTOP version 7.0 de DELPHI.

Debe de ser algo sencillo que me falta para poder eliminar todos los folios con la condicion... quizas algun comodin, ya hice dandole un folio exacto y si me lo modifica.. pero es uno por uno y necesito que sea todos los de la serie de inmediato.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rutina SQL

Publicado por Leo (16 intervenciones) el 08/02/2008 00:31:58
Bueno es "like" y no "is like". Te paso el link de cómo se usa, salvo que el link es para PostgreSQL, anque like pertenece al standart y te debería funcionar en cualquier servidor. Fijate que en los ejemplos, hay uno que dice "'abc' like 'a%'" devuelve true. Son las palabras que empiezan con 'a'
http://www.postgresql.org/docs/8.2/interactive/functions-matching.html

Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rutina SQL

Publicado por Isaias (5072 intervenciones) el 08/02/2008 19:05:10
De acuerdo, la forma correcta es LIKE y no IS LIKE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rutina SQL

Publicado por Jose Rios (5 intervenciones) el 08/02/2008 22:18:22
Lo hice de la siguiente manera y no me actualiza los campos

UPDATE FA0TY1
SET CVE_ART = " "
WHERE CVE_DOC like 'R%'

me manda un mensaje UNABLE TO OPEN TABLE

Donde puede estar el detalle

Gracias por su ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rutina SQL

Publicado por Leo (16 intervenciones) el 09/02/2008 19:38:18
Permiso para actualizar dijiste que tienes, no?. Puede ser entonces que la tabla no exista, no existe el campo, no se :p. Ya no es error de sintaxis ni de mal uso del lenguaje.
Fijate que lo que pongas junto al like sea una cadena

Supongamos
create table TABLA
(
nombreFolio varchar(20)
numeroFolio integer
)

select * from TABLA where nombreFolio like 'R%' funcionaría,
sin embargo
select * from TABLA where TABLA like 'R%' no,

Sino ya es problema del server, me parece.
Puedes poner cómo son las tablas que usas en la consulta para ver cuál es el error.

Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rutina SQL

Publicado por Jose Rios (5 intervenciones) el 09/02/2008 23:31:16
Ya me funciono... gracias

Ahora estoy queriendo eliminar tambien los que inician con 0 pero el campo tiene espacios al principio ejemplo: " 0060" o alineado a la derecha.. trato de dar la misma rutina poniendo "0%" y no me responde kizas por los espacios... estoy haciendo algunas pruebas de acuerdo a la pagina que me mandaste y aun no lo logro, alguna sugerencia?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar