Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-10-2012
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Insertar información de Memo en Tabla de BD

Hola amigos:

Tengo el siguiente problema.
Desde un servidor mi programa recibe datos en un Memo (esto no lo puedo cambiar) en el siguiente formato:

0 : 57[0008:0005](SpecificCharacterSet)CS=<1>ISO_IR 100
0 : 64[0008:0020](StudyDate)DA=<1>13-09-2009
0 : 77[0008:0050](AccessionNumber)SH=<0>NULL
0 : 78[0008:0052](QueryRetrieveLevel)CS=<1>STUDY
0 : 79[0008:0054](RetrieveAETitle)AE=<1>iMacIV
0 : 81[0008:0060](Modality)CS=<0>NULL
0 : 82[0008:0061](ModalitiesInStudy)CS=<1>CT
0 : 95[0008:1030](StudyDescription)LO=<1>ABD PEL
0 : 147[0010:0010](PatientName)PN=<1>Juan Serrano
0 : 148[0010:0020](PatientID)LO=<1>47310
0 : 425[0020:000D](StudyInstanceUID)UI=<1>1.2.840.113619.2.55.3.101357413.805.1252843607.766
0 : 427[0020:0010](StudyID)SH=<1>44901

1 : 57[0008:0005](SpecificCharacterSet)CS=<1>ISO_IR 100
1 : 64[0008:0020](StudyDate)DA=<1>25-08-2009
1 : 77[0008:0050](AccessionNumber)SH=<0>NULL
1 : 78[0008:0052](QueryRetrieveLevel)CS=<1>STUDY
1 : 79[0008:0054](RetrieveAETitle)AE=<1>iMacIV
1 : 81[0008:0060](Modality)CS=<0>NULL
1 : 82[0008:0061](ModalitiesInStudy)CS=<1>CT
1 : 95[0008:1030](StudyDescription)LO=<1>ORBITAS
1 : 147[0010:0010](PatientName)PN=<1>Juan Pérez
1 : 148[0010:0020](PatientID)LO=<1>46382
1 : 425[0020:000D](StudyInstanceUID)UI=<1>1.2.840.113619.2.55.3.101357413.825.1251200228.13
1 : 427[0020:0010](StudyID)SH=<1>43969
2 : 57[0008:0005](SpecificCharacterSet)CS=<1>ISO_IR 100
2 : 64[0008:0020](StudyDate)DA=<1>08-09-2009
2 : 77[0008:0050](AccessionNumber)SH=<0>NULL
2 : 78[0008:0052](QueryRetrieveLevel)CS=<1>STUDY
2 : 79[0008:0054](RetrieveAETitle)AE=<1>iMacIV
2 : 81[0008:0060](Modality)CS=<0>NULL
2 : 82[0008:0061](ModalitiesInStudy)CS=<1>CT
2 : 95[0008:1030](StudyDescription)LO=<1>TX
2 : 147[0010:0010](PatientName)PN=<1>Carlos González
2 : 148[0010:0020](PatientID)LO=<1>47080
2 : 425[0020:000D](StudyInstanceUID)UI=<1>1.2.840.113619.2.55.3.101357413.656.1252387826.725
2 : 427[0020:0010](StudyID)SH=<1>44670

Con el siguiente código puedo insertar sólo el primer registro en una tabla, o sea los datos que necesito y que empiezan con 0

Código Delphi [-]
begin
Temporal.Close;
Temporal.EmptyTable;
Temporal.Open;
das := CnsDicomConnection1.ReceiveDatasets[i];
das.ListAttrinute(IntToStr(i) + ' : ', Memo1.Lines);
Temporal.Insert;
TemporalAcceso.AsString := das.GetString($0008, $0050);
TemporalNombre.AsString := das.GetString($0010, $0010);
Temporalid.AsString := das.GetString($0010, $0020);
TemporalFechaExamen.AsString := das.GetString($0008, $0020);
TemporalDescripcion.AsString := das.GetString($0008, $1030);
TemporalModalidad.AsString := das.GetString($0008, $0061);
Temporal.Post;
bsSkinStdLabel5.Caption:= InttoStr (Temporal.RecordCount);
end;

¿Existe alguna manera de insertar los registros siguientes, los que empiezan con 1, con 2, etc., en registros sucesivos?
Agradezco sinceramente cualquier aporte.

Saludos
Responder Con Cita
  #2  
Antiguo 11-10-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pero, es que yo no entiendo qué haces. ¿Qué es das? ¿Qué, exactamente, hace GetString?

// Saludos
Responder Con Cita
  #3  
Antiguo 11-10-2012
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Mmmm me parece que esta obvio que tienes que hacer ya que "das" contiene todo lo que necesitas y solo basta decirle por ejemplo:

Código Delphi [-]
variable := das.GetString($0008, $0005); // aqui obtienes el primero de los que empiezan con 1

Solo sustituye "variable" por el campo que definiste como estático.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #4  
Antiguo 11-10-2012
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Estimados roman y AzidRain :

Muchas gracias por responder.
Me faltó señalar que la información que se recibe desde el servidor en el Memo1 es el resultado de una consulta (DicomQuery) a una base de datos de imágenes de exámenes radiológicos.
das corresponde a un TDicomAttribute, osea la información que acompaña a las imágenes (Nombre del paciente, fecha de examen, tipo de examen, etc.), que es lo que necesito insertar en una Tabla (Temporal).
GetString solicita la información que corresponde a los atributos definidos de acuerdo al estandar Dicom3, por ejemplo ($0010, $0010) es el nombre del paciente y ($0008, $0020) es la fecha del examen.
Mi problema es que con ese código sólo logro insertar en la tabla de mi BD los datos del primer paciente que arroja la consulta y necesito insertar los datos de todos los pacientes, para realizar posteriormente el procedimiento de extraer dichas imágenes desde el servidor y poder visualizarlas en mi programa.
Lo que tú me señalas AzidRain es lo que tengo en el código que utilizo y que me permite insertar en la tabla el Nº de acceso, nombre, id, modalidad, descripción y fecha de examen, pero mi problema es que necesito insertar estos mismos datos de todos los pacientes que devuelve la consulta.
Los que empiezan con 0 corresponden al primer paciente, los que empiezan con 1 al segundo y así sucesivamente.
No sé si así se entiende mejor.

Saludos y muchas gracias.

Última edición por radenf fecha: 11-10-2012 a las 02:45:55.
Responder Con Cita
  #5  
Antiguo 11-10-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Quizá me equivoque, pero no parece ser que esos componentes sean estándar, de manera que es difícil saber qué hacen tan sólo viendo tu código. Hablas de un memo, pero resulta que los datos vienen en un componente que, al menos yo, desconozco por completo.

Si realmente los tuvieras en un memo y tuvieras un método que lee los datos del primer paciente, pues bastaría entonces borrar esas líneas y pasar al siguiente paciente.

Lamento no poder ayudar más.

// Saludos
Responder Con Cita
  #6  
Antiguo 11-10-2012
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Muchas gracias roman :

Quizás justamente la solución es ir borrando de a 12 líneas (que corresponden a cada paciente) luego de cada insert. Ya lo había considerado pero no conozco el código necesario para seleccionar y borrar las líneas de un Memo.
Los componentes que utilizo son las librerias DicomVCL para visualización de imágenes médicas.

Saludos y gracias de nuevo
Responder Con Cita
  #7  
Antiguo 11-10-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo n o creo que estés borrando líneas de un memo sino de ese componente que usas. Pero bueno, borrar líneas de un memo debe ser algo así:

Código Delphi [-]
for I := 1 to 12 do
  Memo1.Lines.Delete(0); // Observa que no es Delete(I)

// Saludos
Responder Con Cita
  #8  
Antiguo 11-10-2012
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Voy a probar y te cuento.

Muchas gracias
Responder Con Cita
  #9  
Antiguo 12-10-2012
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
No me funcionó eliminando líneas del Memo.
Seguiré intentando hasta dar con la solución.

Muchas gracias a todos
Responder Con Cita
  #10  
Antiguo 15-10-2012
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Solucionado

Por fin encontré la solución al problema.
No era necesario trabajar con el memo sino cambiar el orden de los procesos, ya que como lo había estructurado bloqueaba el desarrollo del bucle de inserción y con este código funciona perfecto.

Código Delphi [-]
Temporal.Close;
Temporal.EmptyTable;
Temporal.Open;
if CnsDicomConnection1.C_FIND(das) then
begin
if CnsDicomConnection1.ReceiveDatasets.Count > 0 then
begin
for i := 0 to CnsDicomConnection1.ReceiveDatasets.Count - 1 do
begin
das := TDicomAttributes(CnsDicomConnection1.ReceiveDatasets[i]);
Temporal.Insert;
TemporalAcceso.AsString := das.GetString($0008, $0050);
TemporalNombre.AsString := das.GetString($0010, $0010);
Temporalid.AsString := das.GetString($0010, $0020);
TemporalFechaExamen.AsString := das.GetString($0008, $0020);
TemporalDescripcion.AsString := das.GetString($0008, $1030);
TemporalModalidad.AsString := das.GetString($0008, $0061);
Temporal.Post;
bsSkinStdLabel5.Caption:= InttoStr (Temporal.RecordCount);
end;

Muchas gracias roman y AzidRain por su ayuda, que me permitió al fin darme cuenta de mi error.

Salu2
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
Insertar renglones en campo Memo river_1 OOP 5 22-06-2011 09:39:41
Insertar palabras desde un memo judit25 Conexión con bases de datos 7 01-03-2008 15:31:07
Insertar al principio de un fichero de texto informacion pepecharlie67 Varios 9 10-01-2006 19:06:22
Campo memo tabla escribirlo en componente Memo Sayuri Conexión con bases de datos 2 18-08-2005 13:58:01
pasar la informacion de un memo a un quickreport soyhugo Varios 1 27-02-2004 18:36:05


La franja horaria es GMT +2. Ahora son las 03:36:07.


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