Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   ListBox, textbox y BD (http://www.forosdelweb.com/f69/listbox-textbox-bd-442898/)

pepelo 14/11/2006 00:42

ListBox, textbox y BD
 
Como estan, necesito de su sabiduria!!!
Tengo un sistemita que adm. fichas medicas.

Basicamente funciona asi
Cargo la ficha en un txtbox (multiline) y lo grabo en la BD, cuando quiero consultar todas las fichas lo muestro en un listbox y me muestra todo

El problema es que si en el txtbox cargue varias lineas me muestra el reg. en una linea y separa los enter con 2 [].
Como puedo hacer para que lo muestre separado?
A mi se me ocurrio grabar en la bd varios registros segun la la cant. de caracteres (ej. cada 80) o por cada enter. El tema es que no se como

Les paso los codigos

HISTORIAL
LstHis.Clear
Codigo = frmPacientes.TxtCod
Set RsHisto = New Recordset
ssql1 = "select Cod_Pa, Historia, (Left(Fecha,3) & Mid(Fecha,4,3) & " _
& "Right(Fecha,2)) as Fecha, Detalle from historias " _
& "where Cod_Pa = " & val(Codigo) & " and Estado= 'A' order by Historia "
RsHisto.Open ssql1, CnSAHC, adOpenDynamic, adLockOptimistic
If RsHisto.BOF And RsHisto.EOF Then
LstHis.AddItem "Ficha Vacia"
Else
LstHis.AddItem RsHisto!Historia & " - " & RsHisto!Fecha & " - " & RsHisto!Detalle
RsHisto.MoveNext
Do While Not RsHisto.EOF
LstHis.AddItem RsHisto!Historia & " - " & RsHisto!Fecha & " - " & RsHisto!Detalle
RsHisto.MoveNext
Loop
End If
RsHisto.Close
End Sub

ALTA

Codigo = frmPacientes.TxtCod
Set RsHisto = New Recordset
ssql1 = "select Historia from historias " _
& "where Cod_Pa = " & val(Codigo) & " order by Historia "
RsHisto.Open ssql1, CnSAHC, adOpenDynamic, adLockOptimistic
If RsHisto.BOF And RsHisto.EOF Then
TxtCodHis = 10
Else
RsHisto.MoveLast
Codigo = RsHisto!Historia
Codigo1 = val(Codigo) + 10
TxtHis.SetFocus
TxtCodHis = Codigo1
End If
RsHisto.Close

A partir de aca compruebo y grabo
If TxtHis = "" Then
Men = MsgBox("Complete la ficha nueva del Paciente", vbExclamation, "Campo Incompleto")
TxtHis.SetFocus
Exit Sub
End If
Fecha = Format$(Date, "dd/mm/yy")
CodPac = val(frmPacientes.TxtCod)

On Error GoTo ErrTrans
CnSAHC.BeginTrans
ssql = "insert into historias (Cod_Pa, Historia, Fecha, Detalle, cod_me, Estado) " _
& " values ('" & CodPac & "', '" & Histo & "','" & Fecha & "','" & TxtHis & "'" _
& " ,'" & Medico & "', 'A')"
CnSAHC.Execute ssql
CnSAHC.CommitTrans
TxtCodHis = ""
TxtHis = ""
CargaHis
Exit Sub

ErrTrans:
If Err.Number <> 0 Then
mes = Err.Number
Men = MsgBox("Se produjo un error en la actualizacion de los datos", vbExclamation, "Error de Sistema")
CnSAHC.RollbackTrans
End If

Gracias por su ayuda.

tazzito 14/11/2006 06:01

consulta como tienes definido el textbox como multiline?
lo otro tendrias que probar que tal te va con un replace

pepelo 14/11/2006 18:11

Si esta como multiline.
Funciona todo pero me graba todo en un registro y cuando consulto el historial me muestra todo en una linea en un listbox.
Lo que necesito es que lo muestre como se ingreso en el txtbox. por eso se me ocurrio grabar varios registros de 80 de caracteres max y reconozca el enter. El problema es que no se como encararlo.

A que te referis cuando decis que pruebe con un replace.

pepelo 14/11/2006 23:32

Estoy tratando de realizar la consulta para ver el historial en el listbox grabando una linea cada 80 chr con la funcion Len y Mid, el problema que tengo es que no se como reconocer el enter que tengo grabado en la base me muestra 2 signos
ej. "El texto q tengo grabado. [][] con el enter en la misma linea."

Lo que necesito es que muestre hasta el enter o 80 chr. por linea

El campo en la bd es de tipo memo.

Por favor si pueden darme una mano, ya que lo necesito urgente.

Gracias de antemano

vash-stampede- 15/11/2006 03:37

No se si funcionará pero has probado que por ejemplo cuando te carge los datos en el textbox, lo revise letra a letra, y cuando encuentre [] pues que haga un enter o cuando encuentre [][]. Que cuando encuentre esos caracteres le metes por ascii un enter (si no recuerdo mal creo que era el 13), pero vaya alomejor estoy diciendo una tonteria.

Estoy empezando un poco y solo son algunas ideas jejeje, espero ser de ayuda...

tazzito 15/11/2006 06:20

el replace que te digo es algo asi


txtMemo.text = Replace( miRecordset!CampoMemo, "[][]", vbCr + vbLf)


lo que hace esta funcion reemplaza un juego de caracter por otro dentro de una cadena, el vbcr + vblf simulan el enter pruebalo asi y nos comentas.


La zona horaria es GMT -6. Ahora son las 12:32.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.