modharbour V2 con Bootstrap5

Responder
Adolfredo martinez
Mensajes: 12
Registered for: 3 years 2 months
Columbia

modharbour V2 con Bootstrap5

Mensaje por Adolfredo martinez »

Hola Charly

Estoy haciendo este ejemplo con bootstrap 5
Quieron colocar los datos en una tabla de bootstrap 5 este es el codigo:

Código: Seleccionar todo

//	--------------------------------------------------------------
//	Title......: WDO Web Database Objects
//	Description: Test WDO
//	Date.......: 28/07/2019
//
//	{% mh_LoadHRB( 'lib/wdo/wdo.hrb' ) %}							//	Loading WDO lib
//	{% HB_SetEnv( 'WDO_PATH_MYSQL', "c:/xampp/htdocs/" ) %}	//	Usuarios Xampp
//	--------------------------------------------------------------

FUNCTION Main()
	LOCAL o, oRs, hRes
    local cHtml := ''
	
	    o := WDO():Rdbms( 'MYSQL', "127.0.0.1", "adolfredo", "19585287", "dbHarbour", 3306 )
	
		
		IF ! o:lConnect		
			RETU NIL
		ENDIF
		
	

	cSql := "SELECT * FROM customer c " +;
		        "LEFT JOIN states s ON s.code = c.state " +;
				"WHERE ( c.state = 'LA' OR c.state = 'AK' ) and c.age >= 58 and c.age <= 60 and c.married = 1 " +;
				"ORDER by first	"		
				
				
		
		IF !empty( hRes := o:Query( cSql  ) )
		
		
			aData := o:FetchAll( hRes )

		//	o:View( o:DbStruct(),	aData )
			
			o:Free_Result( hRes )
		
		ENDIF				
	
      
	
    BLOCKS TO cHtml
      
		{{ mh_View( 'encabezado.view', 'Mod_V2_b5' ) }}
		{{ mh_View( 'pie.view', 'Mod_V2_b5' ) }}
	  
		<div class="container mt-5">
		    <div class="row justify-content-center">
                <div class="col-md-7">
                    <div class="card">
                        <div class="card-header">
                            Lista de Personas
                        </div>
                        <div class="p-4">
                        
                        <table class="table align-midde">
                            <thead>
                                <tr>
                                    <th scope="col">#</th>
                                    <th scope="col">first</th>
                                    <th scope="col">last</th>
                                    <th scope="col">street</th>
                                    <th scope="col" colspan="2">Opciones</th>
                                
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td scope="row">1</td>
                                    <td>Richard</td>
                                    <td>last</td>
                                    <td>street</td>
                                    <td>Editar</td>
                                    <td>Eliminar</td>
                                </tr>
                            </tbody>
                        </table>
                        </div>    
                    </div>    
                </div>
                <div class="col-md-4">
                    DOS
                </div>
		    </div>
		</div>
		
    ENDTEXT
	?? cHtml 

		
RETU NIL

Como hago para mostrar los datos en esa tabla:

Este es el codigo de encabaezado:

Código: Seleccionar todo

<!doctype html>
    <html lang="es">

    <head>
    <!--<title>CRUD Mod_V2 Y Mysql b5</title>-->
    <title>{{ pvalue(1) }}</title>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS v5.2.0-beta1 -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css"
    integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">

    </head>
    <body>
        
        <div class="container-fluid bg-warning">
            <div class="row">
                <div class="col-md">
                    <header class="py=3">
                        <h3 class="text-center"> CRUD Mod_V2 con Bootstrap 5</h3>
                    </header>
                </div>
            </div>
        </div>
    </body>
   </html>
 
Este es el codigo de pie

Código: Seleccionar todo

        <footer class="container-fluid bg-dark fixed-bottom">
            <div class="row">
                <div class="col-md text-light text-center py=3">
                    Desarrollado Por Adolfredo Martinez
                </div>
            </div>
        <!-- place footer here -->
        </footer>
        <!-- Bootstrap JavaScript Libraries -->
        <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.5/dist/umd/popper.min.js"
            integrity="sha384-Xe+8cL9oJa6tN/veChSP7q+mnSPaj5Bcu9mPX5F5xIGE0DVittaqT5lorf0EI7Vk" crossorigin="anonymous">
        </script>

        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.min.js"
            integrity="sha384-ODmDIVzN+pFdexxHEHFBQH3/9/vQ9uori45z4JjnFsRydbmQbmL5t1tQ0culUzyK" crossorigin="anonymous">
        </script>
   

Adolfredo martinez
Mensajes: 12
Registered for: 3 years 2 months
Columbia

Mensaje por Adolfredo martinez »

Bueno ya logre mostrar la informacion en la tabla el codigo quedo asi:

Código: Seleccionar todo

//	--------------------------------------------------------------
//	Title......: WDO Web Database Objects
//	Description: Test WDO
//	Date.......: 28/07/2019
//
//	{% mh_LoadHRB( 'lib/wdo/wdo.hrb' ) %}							//	Loading WDO lib
//	{% HB_SetEnv( 'WDO_PATH_MYSQL', "c:/xampp/htdocs/" ) %}	//	Usuarios Xampp
//	--------------------------------------------------------------

FUNCTION Main()
	LOCAL o, oRs, hRes
    local cHtml := ''
	
	    o := WDO():Rdbms( 'MYSQL', "127.0.0.1", "adolfredo", "19585287", "dbHarbour", 3306 )
	
		
		IF ! o:lConnect		
			RETU NIL
		ENDIF
		
	

	cSql := "SELECT * FROM customer c " +;
		        "LEFT JOIN states s ON s.code = c.state " +;
				"WHERE ( c.state = 'LA' OR c.state = 'AK' ) and c.age >= 58 and c.age <= 60 and c.married = 1 " +;
				"ORDER by first	"		
				
    BLOCKS TO cHtml
      
		{{ mh_View( 'encabezado.view', 'Mod_V2_b5' ) }}
		{{ mh_View( 'pie.view', 'Mod_V2_b5' ) }}
	  
		<div class="container mt-5">
		    <div class="row justify-content-center">
                <div class="col-md-7">
                    <div class="card">
                        <div class="card-header">
                            Lista de Personas
                        </div>
                        <div class="p-4">
                        
                        <table class="table align-midde">
                            <thead>
                                <tr>
                                    <th scope="col">#</th>
                                    <th scope="col">first</th>
                                    <th scope="col">last</th>
                                    <th scope="col">street</th>
                                    <th scope="col" colspan="2">Opciones</th>
                                
                                </tr>
                            </thead>
                            <tbody>
            ENDTEXT                        
                            IF !empty( hRes := o:Query( cSql  ) )
	
                                WHILE ( !empty( hRs := o:Fetch_Assoc( hRes ) ) )
                           
                                    cHtml  += '<tr>'
                                    cHtml  += '<td>' +   hRs[ 'id' ] + '</td>'
                                    cHtml  += '<td>' +  hRs[ 'first' ] + '</td>'
                                    cHtml  += '<td>' +  hRs[ 'last' ] + '</td>'
                                    cHtml  += '<td>' +  hRs[ 'street' ] + '</td>'
                                    cHtml  += '<td>' + 'Editar' + '</td>'
                                    cHtml  += '<td>' + 'Eliminar' + '</td>'
                                    cHtml  += '</tr>'
                                END
                            ENDIF	
                            
     BLOCKS TO cHtml                        
                                </tbody>
                        </table>
                        </div>    
                    </div>    
                </div>
                <div class="col-md-4">
                    DOS
                </div>
		    </div>
		</div>
		
    ENDTEXT
	?? cHtml 

		
RETU NIL
Pero cuando tengo que mostrar campo numerico me sale error, como lo corrijo.
hago asi pero nada
cHtml += '<td>' + str(hRs[ 'age' ]) + '</td>'

Adolfredo martinez
Mensajes: 12
Registered for: 3 years 2 months
Columbia

Mensaje por Adolfredo martinez »

Ya lo solucione asi:

cHtml += '<td>' + transform(( hRs[ 'id' ]) ,"###########" )+ '</td>'

IF !empty( hRes := o:Query( cSql ) )

WHILE ( !empty( hRs := o:Fetch_Assoc( hRes ) ) )

cHtml += '<tr>'
cHtml += '<td>' + transform(( hRs[ 'id' ]) ,"###########" )+ '</td>'
cHtml += '<td>' + hRs[ 'first' ] + '</td>'
cHtml += '<td>' + hRs[ 'last' ] + '</td>'
cHtml += '<td>' + hRs[ 'street' ] + '</td>'
cHtml += '<td>' + 'Editar' + '</td>'
cHtml += '<td>' + 'Eliminar' + '</td>'
cHtml += '</tr>'

END
ENDIF

La verdad fue que dije, bueno si es modharbour, como lo hago en harbour y listo.

Avatar de Usuario
charly
Mensajes: 145
Registered for: 3 years 5 months

Mensaje por charly »

Adolfredo,

Siempre habras de sanear datos. Si esta linea te da error:

cHtml += '<td>' + str(hRs[ 'age' ]) + '</td>'

Sera porque el dato no es numerico. Podrias hacer una sencilla (o tan complicada como quieras) que hicieras algo parecidoa a esto:

Código: Seleccionar todo

cHtml += '<td>' + RSVal2Str( hRs['age'] ) + '</td>'

...

function RSVal2Str( uValue ) 

	local cType := Valtype( uValue )
	
	do case
		case cType == 'N'  ; uValue := str( uValue )
		case cType == 'D'  ; uValue := DToC( uValue )
		case cType == 'L'  ; uValue := If( uValue, 'Si', 'No' )
		case cType == 'U'  ; uValue := "<NULL>"
	endcase
	
retu uValue
Creo recordar que el recorset devuelve siempre tipo caracter, pero podrias tener quizas un valor a null

C.
Salutacions, saludos, regards.
Charly

"...programar es fácil, hacer programas es difícil..."

https://httpd2.blogspot.com/
https://forum.modharbour.app

Responder