Delphi - ayuda con la funcion pos !

   
Vista:

ayuda con la funcion pos !

Publicado por javi (21 intervenciones) el 25/01/2008 22:42:40
Hola xicos,,,tengo una duda...
cuando utilizo la funcion pos con una cadena por ejemplo:
pos('L', Polea) y si encuentra la L en Polea devuelve un entero en la posicion que se encuentra...
Mi duda es la siguiente,,,quiero hacer la misma funcion pos,,,pero quiero que lea la cadena de la columna de una tabla de mi base de datos..ejemplo

pos( ' L ', qrySRV.fieldbyname('DIAS').asstring ),,donde qry es mi consulta y el campo dias es donde se ha almacenado una cadena,,,me salta error,,,pero no se donde fallo
me podeis echar una mano?
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:ayuda con la funcion pos !

Publicado por E.T. (1108 intervenciones) el 25/01/2008 23:05:16
Si pudieras darnos el error que te da, sería mas fácil, pues yo probé y si me funciona
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:ayuda con la funcion pos !

Publicado por javi (21 intervenciones) el 26/01/2008 00:28:07
Esta seria la consulta completa,,,pero no os queria meter todo este rollo,,,pues si ha ti te ha funcionado,,,creo que el problema lo tengo cuando la consulta me recorre las filas ,,, veras bajo en el if pos,,,que he sustituido lo de querysrv.datasource,,,etc por una cadena de texto en este caso LMXJV,,,y he comprobado que si que lo ejecuta bien,,pero al intentar con el dm.qrysrv,,,me falla,,,puede ser que no este recorriendo la columna DIAS para cada fila???no se como plasmarlo en una query,,
me explique??

dm.qrySrvP.SQL.Clear;
dm.qrysrvp.sql.Add('Select a.*, ');
dm.qrysrvp.sql.Add('dbo.getRefServicio(a.codservicio) refsrv,');
dm.qrysrvp.sql.Add('dbo.getAttxServicio(a.codservicio) att,');
dm.qrysrvp.sql.Add(' dbo.getPedidoxServicio(a.codservicio) pedido');
dm.qrysrvp.sql.Add('from servicios_periodicos a');

dm.qrySrvP.sql.Add(' WHERE (a.fini <='''+ datetostr(Fecha) +''') ');
dm.qrySrvP.sql.Add(' AND (a.ffin >='''+ datetostr(Fecha) +''') ');

//ahora recorrer el campo DIAS y sacar los que tengan en ese campo el char correspondiente a la funcion daysofweek
// ejemplo: X ,,Miercoles, en DIAS

s:=dias[DayOfWeek(Fecha)];
showmessage(s);

// como busco el dia,ejemplo X,,en los servicios filtrados por fechas en el campo DIAS

//No se como hacer que se lea la cadena de la columna dIAs para cada servicio

if (pos(s,'LMXJV') >0) then
dm.qrySrvP.Open
else
showmessage('No hay Servicios Periodicos para hoy');
end;

end.
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:ayuda con la funcion pos !

Publicado por E.T. (1108 intervenciones) el 26/01/2008 01:21:21
Que tal.

No me pusiste que error te da, pero por lo que veo el query está desactivado, por lo tanto te intenta buscar en algo vacio, creo que ese es el error, intenta activarlo y luego hacer el pos para ver si es eso, si no es escribe el texto que te sale en la ventana del error
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:ayuda con la funcion pos !

Publicado por javi (21 intervenciones) el 26/01/2008 16:50:31
El error que me sale es el siguiente...
Access violation at adress 004CF4AB in Module 'project1.exe'. Read of adress 000000000

No se que significa,,,pero mirando la consulta,,,me da a mi la sensacion que no puede acceder al campo Dias,, porke estoy siendo ambiguo,,,no le estoy especificando en que registro buscar,,,ya que tiene que buscar para cada fila,,,y volver a buscar para cada columna de esa fila,,recorriendo el campo,,,,

puede ser,,,???hay alguna forma ?? me bloquee y no puedo continuar....nose
gracias!!!
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:ayuda con la funcion pos !

Publicado por E.T. (1108 intervenciones) el 26/01/2008 17:41:23
Mmm... bueno, has probado la sentencia SQL que tienes, sin hacer la búsqueda para saber si funciona.

Ahora, si ya tienes Select a.*, no es necesario poner las otras tres lineas, pero necesitaría que me expliques para que son.

Ya entendí bien que es lo que quieres, solo hay que agregar una linea mas al sql, que sería mas o menos como esta

( 'And DIAS Like '+quotedStr('%')+:Dias+quotedStr('%'))

Con esto lo que tienes que hacer para que funcione es:

dm.qrySrvP.Params[0].Value:='M';
dm.qrySrvP.open;

if dm.qrySrvP.RecordCount>0 then begin
//hay servicios, hacer algo
end;

Tambien hay que ejecutar el programa linea por linea para ver donde se está generando el error y descartar que lo está causando.

Te podría ayudar mas pero necesitaría el programa, pues por este medio es complicado
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