Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-12-2006
kcbb kcbb is offline
Registrado
 
Registrado: oct 2006
Posts: 4
Poder: 0
kcbb Va por buen camino
Problemas de nuevo

Epa panas, tengo un problema trabajando con delphi 5, mi proveedor de BD es AS400, tengouna rutina para hacer select grandes, mas de 255 caracteres, tengo que hacerlos fraccionados, el problema es que cuando trato de usar la sentencia SQL de nuevo da un error. si alguien me puede ayudar se lo agradesco, aqui estoy poniendo el codigo y el error :


"Project cadivi_platinium.exe raised exception class EDBEngine error with message 'inknown internal operating system error.'. process stopped. use or run to continue"

y el codigo es el siguiente


if (nu_reg = 25) then
begin

prueba:= TQuery.Create(self);
with prueba do
begin
DatabaseName := 'qwert';
Close;
UnPrepare;
sql.clear;
sql.add('select s.nu_rif, s.nu_cadivi, p.tx_nombre, s.mt_soli,p.tp_pago from soli s, pimp p where s.nu_soli = p.nu_soli and nu_cadivi in ');
sql.add(' (02546025,02596282,02598001,02600040,02617583,02622689,02628792,02629732,02638452,02639729,02647063, 02647222,02648068,02658368,02667740,02699870,02727455,02727591,02740999,02754777,02759470,02794618,0 2798378,02799152,02811602)');
Prepare;
open;
end;
graba_rx;
prueba.sql.CleanupInstance;
prueba.Destroy;
end;

Espero la respuesta de un guru jejejejje
Responder Con Cita
  #2  
Antiguo 01-12-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola kcbb
Creo que ayer dieron Roman y Bicho la respuesta a esto pero creo que tu problema se soluciona asi:
Código Delphi [-]
sql.clear;
sql.add('select s.nu_rif, s.nu_cadivi, p.tx_nombre, s.mt_soli,p.tp_pago');
sql.add(' from soli s, pimp p where s.nu_soli = p.nu_soli and nu_cadivi in ');
sql.add('(02546025,02596282,02598001,02600040,02617583,02622689,');
sql.add(' 02628792,02629,732,02638452,02639729,02647063,'); 
sql.add(' 02647222,02648068,02658368,02667740,02699870,');
sql.add(' 02727455,02727591,02740999,02754777,02759470,02794618,0,');
 sql.add(' 2798378,02799152,02811602)');
Prepare;
Osea separando los caracteres, no se si con este otro serviria tambien:
Código Delphi [-]
sql.clear;
sql.add('select s.nu_rif, s.nu_cadivi, p.tx_nombre, s.mt_soli,p.tp_pago');
sql.add(' from soli s, pimp p where s.nu_soli = p.nu_soli and nu_cadivi in ');
sql.add('(02546025,02596282,02598001,02600040,02617583,02622689,'+
          ' 02628792,02629,732,02638452,02639729,02647063,'+ 
          ' 02647222,02648068,02658368,02667740,02699870,'+
          ' 02727455,02727591,02740999,02754777,02759470,02794618,0'+ 
          ' 2798378,02799152,02811602)');
Prepare;
En este ultimo los maestros te podrian dar su opinion.
Otra cosa usa las etiquetas para que el codigo se entienda mejor
Saludos
Responder Con Cita
  #3  
Antiguo 01-12-2006
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Hola, yo personalmente lo hago así:

Código Delphi [-]
sql.text:='select s.nu_rif, s.nu_cadivi, p.tx_nombre, s.mt_soli,p.tp_pago'+
             ' from soli s, pimp p where s.nu_soli = p.nu_soli and nu_cadivi in '+
             '(02546025,02596282,02598001,02600040,02617583,02622689,'+
             '...';
Usando la propiedadad text lo que me evito es tener que limpiar con sql.clear antes de añadir la nueva sentencia.

No se cuan correcto esté esto, pero a mi siempre me ha dado resultado.

Saludos Yusnerqui.
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo

Responder Con Cita
  #4  
Antiguo 01-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por yusnerqui
No se cuan correcto esté esto, pero a mi siempre me ha dado resultado.
Al asignar un valor a la propiedad Text, internamente se hace un Clear antes, así que no solo es correcto, sino que ahorras una línea de código, amén de ser más eficiente que añadir varias líneas, es una sola asignación.

Normalmente se usa el método Add para clarificar el código y quizás más por gusto que otra cosa.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 01-12-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hoy no dejo de repetir lo que dice Lepe, pero es que hay que darle la razón
Al usar la propiedad SQl.Text, estás haciendo una asignación, con lo cual borras el contenido anterior y te quedas con el que le has asignado.
Pero personalmente siempre uso el SQL.Add, para clarificar, comodidad y costumbre.

Por otro lado, kcbb no ha comentado si le ha ido bien. Yo intuyo que los tiros no van por ahí, porque esta linea del SQL no llega a los 255 carácteres

Cita:
Empezado por kcbb
Código SQL [-]
sql.add(' (02546025,02596282,02598001,02600040,02617583,02622689,02628792,02629732,02638452,02639729,02647063, 
02647222,02648068,02658368,02667740,02699870,02727455,02727591,02740999,02754777,02759470,02794618,0 2798378,02799152,02811602)');
con lo cual, creo que no es la razón del error que le dá. Por el tipo de error, me suena más a que tiene activada la opción de Stop en Delphi Exception (Menu Tools => Debugger Options => Pestaña Language Exceptions => Checkbox "Stop on delphi exceptions" hay que desmarcarlo)

Esperamos tu respuesta para saber que ha sido al final.

Saludos
Responder Con Cita
  #6  
Antiguo 03-12-2006
kcbb kcbb is offline
Registrado
 
Registrado: oct 2006
Posts: 4
Poder: 0
kcbb Va por buen camino
Di con el problema, segun lo que me imagino, y me jefe igual.
estaba migrando informacion de 3 BD diferentes a una 4ta BD, resulta que las conexiones con las otras BD me estaban consumiendo la memoria, la solucion fue crear el objeto, usarlo y destriurlo. Por si a alguien mas le sirve, gracias a las personas que respondieron a mi inquitud
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problemas en un insercion de un nuevo registros alfil123 Conexión con bases de datos 2 25-01-2006 02:00:06
De nuevo problemas con el winexec quake2420 Varios 2 02-08-2005 16:08:26
año nuevo, problema nuevo maruenda Varios 4 05-01-2004 00:17:58
Problemas al instalar nuevo servicio Ezecool Varios 0 01-10-2003 01:02:51


La franja horaria es GMT +2. Ahora son las 22:21:57.


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
Copyright 1996-2007 Club Delphi