Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Skeletron

#821
Cita de: seba123neo en 12 Octubre 2009, 06:15 AM
aca esta el ejemplo lo acabo de probar recien:

Código (vbnet) [Seleccionar]
        Dim vItem As ListViewItem
        While dr.Read
            vItem = New ListViewItem(dr("idestado").ToString)
            vItem.SubItems.Add(dr("nombre"))
            ListView1.Items.Add(vItem)
        End While
        vItem = Nothing


donde "dr" es el datareader...

Pero tio, es lo mismo que hice yo...
La diferencia, es que vos creas un item, le cargas los datos y luego lo subis al item ya con sus SUB DATOS... pero yo los ingreso a los sub-datos cuando el item esta cargado..
Vos decis que es mas eficiente esa manera??
#822
Si podes encontrarme algun mejor metodo, mejor.. Yo tambien pensé que hacer 5 lineas para agregar 1 item completo era mucho.. pero bue.. no vi nada diferente..

En cuanto a lo que me preguntaste de como hago con los codigos, aca te paso los datos:

Así creo un DATABASE donde el usuario quiera:
       'Save Dialog Box
       Dim f As New SaveFileDialog
       f.Filter = "SQLite 3 (*.db3)|*.db3|All Files|"
       f.ShowDialog()
       'Create Database
       Dim SQLconnect As New SQLite.SQLiteConnection()
       'Database Doesn't Exist so Created at Path
       SQLconnect.ConnectionString = "Data Source=" & f.FileName & ";"
       SQLconnect.Open()
       SQLconnect.Close()

así creo una tabla a un archivo database que hay que seleccionar:
   Dim f As New OpenFileDialog
   f.Filter = "SQLite 3 (*.db3)|*.db3|All Files|*.*"
   If f.ShowDialog() = DialogResult.OK Then
       Dim SQLconnect As New SQLite.SQLiteConnection()
       Dim SQLcommand As SQLiteCommand
       SQLconnect.ConnectionString = "Data Source=" & f.FileName & ";"
       SQLconnect.Open()
       SQLcommand = SQLconnect.CreateCommand
       'SQL query to Create Table
       SQLcommand.CommandText = "CREATE TABLE foo(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, description TEXT, image BLOB);"
       SQLcommand.ExecuteNonQuery()
       SQLcommand.Dispose()
       SQLconnect.Close()
   End If


Aca estan las 3 opciones: Insert Update y Delete:
   Dim f As New OpenFileDialog
   f.Filter = "SQLite 3 (*.db3)|*.db3|All Files|*.*"
   If f.ShowDialog() = DialogResult.OK Then
       Dim SQLconnect As New SQLite.SQLiteConnection()
       Dim SQLcommand As SQLiteCommand
       SQLconnect.ConnectionString = "Data Source=" & f.FileName & ";"
       SQLconnect.Open()
       SQLcommand = SQLconnect.CreateCommand
       'Insert Record into Foo
       SQLcommand.CommandText = "INSERT INTO foo (title, description) VALUES ('This is a title', 'This is a Description')"
       'Update Last Created Record in Foo
       SQLcommand.CommandText = "UPDATE foo SET title = 'New Title', description = 'New Description' WHERE id = last_insert_rowid()"
       'Delete Last Created Record from Foo
       SQLcommand.CommandText = "DELETE FROM foo WHERE id = last_insert_rowid()"
       SQLcommand.ExecuteNonQuery()
       SQLcommand.Dispose()
       SQLconnect.Close()
   End If

Y aca la sentencia Select:
   Dim f As New OpenFileDialog
   f.Filter = "SQLite 3 (*.db3)|*.db3|All Files|*.*"
   If f.ShowDialog() = DialogResult.OK Then
       Dim SQLconnect As New SQLite.SQLiteConnection()
       Dim SQLcommand As SQLiteCommand
       SQLconnect.ConnectionString = "Data Source=" & f.FileName & ";"
       SQLconnect.Open()
       SQLcommand = SQLconnect.CreateCommand
       SQLcommand.CommandText = "SELECT * FROM foo"
       Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
       lst_records.Items.Clear()
       While SQLreader.Read()
           lst_records.Items.Add(String.Format("ID = {0}, Title = {1}, Description = {1}", SQLreader(0), SQLreader(1), SQLreader(2)))
           'Optionally use the variable names to identify columns
           'De lst_records.Items.Add(String.Format("ID = {0}, Title = {1}, Description = {1}", SQLreader("id"), SQLreader("title"), SQLreader("description")))
       End While
       SQLcommand.Dispose()
       SQLconnect.Close()
   End If


Como verás, a todo eso lo LAMERÉE hace un tiempo :D
Modifico todo lo de tomar un archivo desde un lugar de MI PC, y hago todo con unas variables globales que tengo en la aplicacion... (donde se guadan los datos del string donde esta el archivo database)
#823
Cita de: seba123neo en 12 Octubre 2009, 04:33 AM
esta, pero igualmente fijate lo de como cargar el listview en internet, por mas que ande a veces no quiere decir que sea la forma correta y puedas esperimentar problemas mas delante, en lo que yo te digo no tenes que poner indices ni nada por el estilo, fijate que es la mejor forma y la correcta de cargar un listview.

para ordenar el lsitview no es asi nomas con activarle la propiedad , debes escribir una funcion que compare y te devuelva el ordenamiento. basicamente lo basico es hacer algo asi:

Código (vbnet) [Seleccionar]
If ListView1.Sorting = SortOrder.Ascending Then
ListView1.Sorting = SortOrder.Descending
Else
ListView1.Sorting = SortOrder.Ascending
End If
ListView1.Sort()


pero eso solo sirve si el campo es string, para numeros y fechas no te sirve y vas a tener que escribir codigo...busca en internet que hay miles de como hacerlo y no es mucho codigo.

saludos.
Sería algo así como un "IMPLEMENT COMPARABLE" en Java...
Pero.. has visto que en el explorador de Windows, cuando le ahces click en TIPO DE ARCHIVO, o TAMAÑO.. solo se ordenan... Entiendo que detras de eso hay codigo, pero, tengo que programar ese codigo??? no se hace de manera automatica??

Agrego:
Y vos me decis lo de SQL SERVER LITE, ese es el SQL SERVER de Microsoft, pero LITE... o me equivoco?? Yo te hablo de SQLite http://www.sqlite.org/

Mira:
http://www.sqlite.org/datatypes.html
y
http://www.sqlite.org/datatype3.html


Agrego2:
Y no he visto en ninguna web, que mejor manera hay para agregar items con sus "sub-datos". y es mas, si miras aqui: http://msdn.microsoft.com/es-es/library/wh9a3t2x%28VS.80%29.aspx lo hacen como yo te digo..
#824
Cita de: seba123neo en 12 Octubre 2009, 04:12 AM
Hola, primero algunas preguntas , ¿ porque creas la bases de datos asi con un comando ?, porque no la creas con el administrador de SQL Lite desde el mismo visual studio ? porque me parece que estan mal los tipos de datos creados ahi. para guardar la fecha usas el tipo de dato DateTime en SQL Server. cuando lo guardas lo debes guardar con la funcion Format() formatado a "yyyymmdd", y para mostrarlo en la grilla despues debes en la consulta SQL fomatear tambien la fecha asi te muestra solo la fecha y no todo con el horario.

para el boolean se usa el tipo de dato bit que es 0 o 1...que yo sepa no existe boolean. y el monto deberia ser un tipo de dato como el Double..en SQL Server debe ser algo como real.

lo mejor para trabajar con bases de datos es crear clases y no poner el select asi en los botones o demas controles, deberia ser programación en 3 capas, es lo mejor. de ultima si eso es mucho...deberias hacerte uans clases con metodos para insertar, update, delete , chequeos etc...pero en una clase..sino se desaprovecha la POO de vb net..

eso cuando carga el listview esta mal...por eso estas teniendo problemas...estas poniendo siempre el 0...yo no lo cargo asi y creo que no se carga asi estoy seguro..mirate ejemplos e internet como lo hacen..crean un objeto del tipo ListViewItem y lo cargan desde ahi, van llenando los subitems con los datos y despues a lo ultimo le ahcen el .ADD y añaden toda la fila.

saludos.

AMigo, Te comento que uso SQLite.. Lo de las funciones FECHA, me gustaria que me lo expliques mejor... Sin administradores me manejo bien.. (por ahora)... Pero esta MUY MAL como lo estoy haciendo???

En cuanto a lo del BOOLEAN, yo leí por ahí que SQLite si tiene el tipo BOOLEAN.. Corrigeme si me equivoco..
En cuanto al DOUBLE, si, es verdad, necesito numeros con COMA, de putno flotante, pero todavia no he mriado bien eso... Me gustaria que em digas cual es el tipo de dato de punto flotante para SQLITE

En cuanto a la programacion de 3 capas, y POO, es verdad, lo pondré en practica... seguramente modifique todo eso mañana..

Y en cuanto a lo del lsitview, era eso, efectivamente, auqnue te comento que lo solucione antes que me lo digas :P
Pero se me presento un problea: Ahora no se ordena automaticamente, proque eso era el problema.. pero, tendria que ordenarlo manualmente entonces, así que puse que el usuario pueda ordenarlo manualmente pero no me funciona.. algo raro pasó.. no quiero preugntarte cual puede ser el problema, porque es algo totalmente ilogico.. per bueno.. seguire probando
#825
Lo solucione.. Saben cual era el problema? esa parte que dije que no creía que estaba el error, era ahí.. Porque? porque en las propiedades del ListView, decia que los items se tenían que ordenar... Aparentemente, vb.net los va ordenando mientras los va ingresando.. no hace un Ordenamiento al finalizar... entonces, entre los ordenados, quedaban mal los datos..
Ahora ya le puse que no ordene, y le modifique el codigo así: (vean que irá modificando los SUBDATOS, ya que se irá incrementando "X")

Pero ahora tengo que ordenar los items haciendo click en los "TITULOS" de las columnas... pero.. no funciona ¬¬ y tengo seleccionada la opcion que los elementos se pueden ordenar... todo mal..

Código (vbnet) [Seleccionar]
        Dim X As Integer = 0
        Dim SQLconnect As New SQLite.SQLiteConnection()
        Dim SQLcommand As SQLite.SQLiteCommand
        SQLconnect.ConnectionString = "Data Source=" & My.Settings.Database & ";"
        SQLconnect.Open()
        SQLcommand = SQLconnect.CreateCommand
        SQLcommand.CommandText = "SELECT * FROM Movimientos"
        Dim SQLreader As SQLite.SQLiteDataReader = SQLcommand.ExecuteReader()
        Planilla.Items.Clear()
        While SQLreader.Read()
            Planilla.Items.Add(SQLreader(0))
            'HAY PROBLEMAS
            Planilla.Items(X).SubItems.Add(SQLreader(1))
            Planilla.Items(X).SubItems.Add(SQLreader(2))
            Planilla.Items(X).SubItems.Add(SQLreader(3))
            Planilla.Items(X).SubItems.Add(SQLreader(4))
            Planilla.Items(X).SubItems.Add(SQLreader(5))
            X += 1
        End While
        SQLcommand.Dispose()
        SQLconnect.Close()
#826
Hola gente, les comentoq ue tengo
La TABLA de la base de datos se crea con el siguiente codigo:
       
Código (vbnet) [Seleccionar]
Dim SQLconnect As New SQLite.SQLiteConnection()
       Dim SQLcommand As SQLite.SQLiteCommand
       SQLconnect.ConnectionString = "Data Source=" & My.Settings.Database & ";"
       SQLconnect.Open()
       SQLcommand = SQLconnect.CreateCommand
       'SQL query to Create Table
       SQLcommand.CommandText = "CREATE TABLE Movimientos(Fecha CURRENT_DATE, Detalle TEXT, Documento TEXT, Comprobante TEXT, IngEgre BOOLEAN, Monto INTEGER);"
       SQLcommand.ExecuteNonQuery()
       SQLcommand.Dispose()
       SQLconnect.Close()

Como veran, un datos es una FECHA (en cuanto a eso, me gustaria que me recomienden si hay un mejor metodo para guardar FECHAS.. ya que con DATE, me guarda hasta el horario (00:00:00) y no quiero), luego hay un Detalle, Documento y Comprobante que son de TEXT, luego un Boolean que no me esta funcionando.. que dato le tengo que pasar? la palabra: TRUE o FALSE, o 0 o 1??? y un Monto INTEGER...


Envio unas 5 entradas, y los resutaldos estan OK!!!
Miren las fotos:




Ahora Ingreso otra entrada EXACTAMENTE IGUAL a la 1001-10-01 y miren:


Y para empeorar todo:
Ahora agrego una entrada con fecha: 1002-10-10, pero con los detalles de las coolumnas iguales a los del item 1001-10-10 y aparece ésto:



QUieren que le empeore mas las cosas?
Ok...
Para pasar los datos a la tabla esa, tengo el sigueinte codigo:

       
Código (vbnet) [Seleccionar]
Dim SQLconnect As New SQLite.SQLiteConnection()
       Dim SQLcommand As SQLite.SQLiteCommand
       SQLconnect.ConnectionString = "Data Source=" & My.Settings.Database & ";"
       SQLconnect.Open()
       SQLcommand = SQLconnect.CreateCommand
       SQLcommand.CommandText = "SELECT * FROM Movimientos"
       Dim SQLreader As SQLite.SQLiteDataReader = SQLcommand.ExecuteReader()
       Planilla.Items.Clear()
       While SQLreader.Read()
           Planilla.Items.Add(SQLreader(0))
           'HAY PROBLEMAS
           Planilla.Items(0).SubItems.Add(SQLreader(1))
           Planilla.Items(0).SubItems.Add(SQLreader(2))
           Planilla.Items(0).SubItems.Add(SQLreader(3))
           Planilla.Items(0).SubItems.Add(SQLreader(4))
           Planilla.Items(0).SubItems.Add(SQLreader(5))
           MsgBox(SQLreader(0) & SQLreader(1) & SQLreader(2) & SQLreader(3) & SQLreader(4) & SQLreader(5))
       End While
       SQLcommand.Dispose()
       SQLconnect.Close()


Como veran, siempre modifica el item 0, eso es así porque cada item que va agregando se transofrma en el "CERO" (no se porque, pero bueno.. es así.. muy raro.. o tal vez ahí esta el problema, pero no lo creo..)
HAN VISTO qu tengo un MSGBOX???? y se preguntaran para que es...
Puse ese MSGBOX para que con cada ingreso que hace, me muestre en una cadena de texto lo que va a incertar.. y gente: ME MUESTRA TODOS LOS ITEMS PERFECTAMENTE!!.. TODOS!!!!!!.. O sea.. el problema esta al visualizar la tabla!!!, es como que al mostrarse la tabla, se "eliminan" los datos de los items repetidos.. algo así!!!
Alguien me da una mano?
#827
Espero tu mensaje
#828
Perfecto Amigo..
Gracias.
Así lo hice..
#829
Cita de: seba123neo en 10 Octubre 2009, 01:26 AM
y aparte ninguno de los FAKE es igual al messenger.
+1
#830
Pero.. para ello, en el "LOGIN" tengo que hacer un:

PRINCIPAL.Show()
Dispose()

Cuando se hace el Dispose, se cierra toda la aplicacion..