• Domingo 8 de Septiembre de 2024, 01:49

Mostrar Mensajes

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


Mensajes - JKim

Páginas: 1 2 [3]
51
Visual Basic 6.0 e inferiores / Consulta SQL
« en: Jueves 22 de Mayo de 2003, 17:42 »
Gracias a ti por contestar con la respuesta correcta. Enhorabuena!

52
Hola Majuhemo, primero que nada muchas gracias por responder y dedicar algo de tiempo a mi consulta.

1) La idea es mejorar la velocidad de la consulta (bien dicho: la velocidad que el usuario percibe) Tengo el siguente problema. Estoy lanzando una sola consulta (como tu sugieres) que tarda bastante y la verdad es que si pudiera partirla en dos me ahorraría tiempo. El usuario elige una opción de un combo y cada vez que elige una opción se lanza esa consulta tan costosa cuando en realidad si hubiera lanzado una consulta primero y recuperado unos registros luego solo tendría que hacer una pequeña consulta sobre ese recordset recuperado que sería más pequeña y menos costosa (No puedo utilizar el método de busqueda en un recordset (Find o Seek) pq la segunda consulta es algo más complicada)
Si se te ocurre algo gracias!

2) El segundo punto quisiera saber que es lo dbo que sale en el FROM. No he tenido tiempo de probarlo pero lo probaré y te diré algo Gracias!
:gracias::gracias:

53
Es que nadie lo sabe!!!!!:devil:

54
Visual Basic 6.0 e inferiores / Re: Consulta SQL
« en: Miércoles 21 de Mayo de 2003, 19:27 »
Hola MiguelPG!

Yo apuntaría más al tipo de recordset que a la SQL. Compruebalo. Te paso una pág de ayuda de VB por si no la tuvieras.

Saludos y suerte

OpenRecordset (Método)
   

Crea un nuevo objeto Recordset y lo añade a la colección Recordsets.

Sintaxis

Para los objetos Connection y Database:

Set variable = objeto.OpenRecordset (origen, tipo, opciones, bloquearmodificaciones)

Para los objetos QueryDef, Recordset y TableDef:

Set variable = objeto.OpenRecordset (tipo, opciones, bloquearmodificaciones)

La sintaxis del método OpenRecordset consta de las siguientes partes.

Argumento Descripción
variable Una variable de objeto que representa el objeto Recordset que desea abrir.
objeto Una variable de objeto que representa un objeto existente desde el que desea crear el objeto Recordset nuevo.
origen Un tipo de datos String que especifica el origen de los registros para el nuevo Recordset. El origen puede ser un nombre de tabla, un nombre de consulta o una instrucción SQL que devuelve registros. Para objetos Recordset de tipo bases de datos Microsoft Jet, el origen sólo puede ser un nombre de tabla.
tipo Opcional. Una constante que indica el tipo de objeto Recordset a abrir, como se especifica en Valores.  
opciones Opcional. Una combinación de constantes que especifican las características del objeto Recordset nuevo, como se especifica en Valores.
bloquearmodificaciones Opcional. Una constante que determina el bloqueo para el objeto Recordset, como se especifica en Valores.  


Valores

Puede utilizar una de las siguientes constantes para el argumento tipo.

Constante Descripción
dbOpenTable Abre un objeto Recordset de tipo Table (sólo espacios de trabajo Microsoft Jet).
DbOpenDynamic Abre un objeto Recordset de tipo Dynamic, que es parecido a un cursor dinámico ODBC (sólo espacios de trabajo ODBCDirect)
dbOpenDynaset Abre un objeto Recordset de tipo Dynaset, que es parecido a un cursor de conjunto de claves ODBC.
dbOpenSnapshot Abre un objeto Recordset de tipo Snapshot, que es parecido a un cursor estático ODBC.
dbOpenForwardOnly  Abre un objeto Recordset de tipo Forward-only.  


Nota Si abre un objeto Recordset en un espacio de trabajo Microsoft Jet y no especifica un tipo, el método OpenRecordset crea una objeto Recordset de tipo Table, si es posible. Si especifica una tabla vinculada o una consulta, el método OpenRecordset crea un objeto Recordset.de tipo Dynaset. En un espacio de trabajo ODBCDirect, el valor predeterminado es dbOpenForwardOnly.

Puede utilizar una combinación de las siguientes constantes para el argumento opciones:

Constante Descripción
dbAppendOnly  Permite al usuario anexar registros nuevos al objeto Recordset, pero impide la creación o eliminación de registros existentes (sólo objetos Recordset de tipo Dynaset de Microsoft Jet).
DbSQLPassThrough  Transfiere una instrucción SQL a un origen de datos ODBC conectado a Microsoft Jet para procesar (sólo un objeto Recordset de tipo Snapshot de Microsoft Jet).
DbSeeChanges Genera un error en tiempo de ejecución si otro usuario está cambiando los datos que usted está modificando.(Sólo en objetos Recordset de tipo Snapshot de Microsoft Jet). Esto es útil en aplicaciones donde varios usuarios tiene acceso de lectura/escritura simultáneo a los mismos datos.  
dbDenyWrite  Previene que otros usuarios puedan modificar o agregar registros (sólo objetos Recordset de Microsoft Jet).
dbDenyRead  Previene que otros usuarios puedan leer datos de una tabla (sólo objetos Recordset de tipo Table de Microsoft Jet).
dbForwardOnly  Crea un objeto Recordset de tipo Forward-only (sólo objetos Recordset de tipo Snapshot de Microsoft Jet). Se proporciona sólo para compatibilidad con versiones anteriores y debe utilizar la constante dbOpenForwardOnly en el argumento tipo en vez de utilizar esta opción.  
dbReadOnly  Previene que otros usuarios puedan hacer cambios el objeto Recordset (sólo Microsoft Jet). La constante dbReadOnly en el argumento bloquearmodificaciones reemplaza esta opción, la cual se proporciona para compatibilidad con versiones anteriores.
DbRunAsync Ejecuta una consulta asíncrona (sólo espacios de trabajo ODBCDirect).  
dbExecDirect  Ejecuta una consulta saltando el método SQLPrepare y llamando directamente al método SQLExecDirect (sólo espacios de trabajo ODBCDirect). Utilice esta opción sólo cuando no se abra un objeto Recordset basándose en una consulta de parámetros. Para obtener más información, consulte la "Referencia del programador de Microsoft ODBC 3.0."
dbInconsistent  Permite actualizaciones inconsistentes (sólo objetos Recordset de tipo Dynaset de Microsoft Jet).
dbConsistent  Permite sólo actualizaciones consistentes (sólo objetos Recordset de tipo Dynaset de Microsoft Jet).


Nota Las constantes dbConsistent y dbInconsistent se excluyen mutuamente y el uso de ambos produce un error. Proporcionar un argumento bloquearmodificaciones cuando el argumento opciones utiliza la constante dbReadOnly también produce un error.

Puede utilizar las siguientes constantes para el argumento bloquearmodificaciones:.

Constante Descripción
dbReadOnly Previene que los usuarios hagan cambios al Recordset (predeterminado en espacios de trabajo ODBCDirect). Puede utilizar dbReadOnly en el argumento opciones o en el argumento bloquearmodificaciones, pero nunca en ambos. Si lo utiliza en ambos argumentos, se produce un error en tiempo de ejecución.
dbPessimistic  Utiliza el bloqueo pesimista para determinar cómo se pueden hacer cambios al objeto Recordset en un entorno multiusuario. La página que contiene el registro que está modificando está bloqueada mientras utiliza el método Edit (predeterminado en espacios de trabajo Microsoft Jet).
dbOptimistic  Utiliza el bloqueo optimista para determinar cómo se pueden hacer cambios al objeto Recordset en un entorno multiusuario. La página que contiene el registro que está modificando está bloqueada mientras se ejecuta el método Update.
dbOptimisticValue  Utiliza la concurrencia optimista basándose en valores de fila (sólo espacios de trabajo ODBCDirect).
dbOptimisticBatch  Activa la actualización optimista por lotes (sólo espacios de trabajo ODBCDirect).


Comentarios

En un espacio de trabajo Microsoft Jet, si objeto hace referencia a un objeto QueryDef o Recordset de tipo Dynaset o Snapshot o si origen hace referencia a una instrucción SQL o un TableDef que representa una tabla adjunta, no podrá utilizar dbOpenTable para el argumento tipo y si lo hace, se producirá un error interceptable. Si desea utilizar una consulta de paso a través de SQL en una tabla adjunta origen de datos ODBC conectado a Microsoft Jet, debe establecer primero la propiedad Connect de la base de datos de la tabla adjunta a una cadena de conexión ODBC válida. Si sólo necesita hacer una única pasada a un Recordset abierto desde un origen de datos ODBC conectado a Microsoft Jet, puede mejorar el rendimiento utilizando dbOpenForwardOnly para el argumento tipo.

Si objeto hace referencia a un Recordset de tipo Dynaset o Snapshot, el Recordset nuevo es del mismo tipo objeto. Si objeto hace referencia a un objeto Recordset de tipo Table, el tipo del objeto nuevo es un objeto Recordset de tipo Dynaset. No puede abrir objetos Recordset nuevos desde objetos Recordset de tipo Forward-only u ODBCDirect.

En un espacio de trabajo ODBCDirect, puede abrir un objeto Recordset que contiene más de una consulta de selección en el argumento origen, como

"SELECT Apellido, Nombre FROM Autores
WHERE Apellidos = 'García';
SELECT Título, Código FROM Títulos
WHERE Código Like '1-55615-*'"

El objeto Recordset devuelto se abrirá con el resultado de la primera consulta. Para obtener el conjunto de registros de resultado de consultas subsiguientes, utilice el método NextRecordset.

Nota Puede enviar consultas DAO a una gran variedad de servidores de bases de datos con ODBCDirect, diferentes servidores reorganizarán ligeramente los diferentes dialectos de SQL. Por esto, la Ayuda sensible al contexto de SQL de Microsoft Jet no es muy extensa, aunque la Ayuda en pantalla de SQL de Microsoft Jet esté todavía incluida en el menú Ayuda. Compruebe que la documentación de referencia para el dialecto SQL de su base de datos del servidor es la apropiada cuando utilice cualquier conexión ODBCDirect, o consultas de paso a través, en aplicaciones cliente/servidor conectadas a Microsoft Jet.

Utilice la constante dbSeeChanges en espacio de trabajo Microsoft Jet si desea captar los cambios realizados mientras dos o más usuarios están modificando o eliminando el mismo registro. Por ejemplo, si dos usuarios empiezan a modificar el mismo registro, el primer usuario que ejecute el método Update consigue realizar la operación. Cuando el segundo usuario ejecute el método Update ocurre un error de tiempo de ejecución. Del mismo modo, si el segundo usuario intenta utilizar el método Delete para eliminar un registro y el primer usuario ha cambiado ya el mismo, se produce un error de tiempo de ejecución.

En general, si al usuario se le presenta este error mientras está actualizando, su código debe actualizar el contenido de los campos y leer los valores recientemente modificados. Si se produce el error durante el proceso de eliminación, el código puede mostrar al usuario los nuevos datos del registro junto con un mensaje que indica que se han modificado recientemente los datos. En este momento, el código puede solicitar una confirmación de que el usuario desea aún eliminar el registro.

También podría utilizar la constante dbSeeChanges si abre un objeto Recordset en un espacio de trabajo ODBC conectado a Microsoft Jet contra una tabla de Microsoft SQL Server 6.0 (o posterior) que tiene una columna IDENTITY, en caso contrario se puede producir un error.

En un espacio de trabajo ODBCDirect, puede ejecutar consultas asíncronas estableciendo la constante dbRunAsync en el argumento opciones. Esto permite a su aplicación seguir procesando otras instrucciones mientras se ejecuta la consulta en segundo plano. Pero, no puede tener acceso a los datos del objeto Recordset hasta que se haya completado la consulta. Para determinar si la consulta a terminado, compruebe la propiedad StillExecuting del objeto Recordset nuevo. Si la consulta tarda más tiempo en acabar del esperado, puede terminar la ejecución de la consulta con el método Cancel.

Abrir más de un objeto Recordset en un origen de datos ODBC puede fallar porque las conexiones están ocupadas con una llamada al método OpenRecordset. prioritaria. Una alternativa a esto es utilizar un cursor del lado del servidor y ODBCDirect, si el servidor lo admite. Otra solución es llenar completamente objeto Recordset utilizando el método MoveLast en cuanto se abre el Recordset.

Si abre un objeto Connection con DefaultCursorDriver establecido a dbUseClientBatchCursor, puede abrir un objeto Recordset para hacer cambios a los datos en la memoria caché (conocido como actualización por lotes) en un espacio de trabajo ODBCDirect. Incluya dbOptimisticBatch en el argumento bloquearmodificaciones para activar la actualización en la memoria caché. Consulte el tema del método Update para obtener más detalles acerca de cómo grabar los cambios en el disco inmediatamente o hacer cambios en la memoria caché y grabarlos en disco como un proceso por lotes.

Al cerrar un Recordset utilizando el método Close, se eliminará automáticamente de la colección Recordsets.

Nota Si origen hace referencia a una instrucción SQL compuesta por una cadena concatenada con valores no enteros y los parámetros del sistema especifican un signo decimal no de EE.UU. como una coma (por ejemplo, strSQL = "PRECIO > " & lngPrecio y lngPrecio = 125,50), se produce un error cuando intenta abrir el objeto Recordset. Esto es debido a que durante la concatenación, el número se convertirá en una cadena utilizando su signo decimal predeterminado del sistema y SQL sólo acepta signos decimales de EE.UU.
:suerte:

55
Visual Basic 6.0 e inferiores / Re: StatusBar estilo XP
« en: Miércoles 21 de Mayo de 2003, 19:16 »
Gracias!:photo:

56
Visual Basic 6.0 e inferiores / Re: Ejemplo Pop-up menu
« en: Miércoles 21 de Mayo de 2003, 18:58 »
Hay unos apuntes en esta pag:

http://ca.inf.udec.cl/

de visual en los que lo explica bastante bien.

Entra en ella, después pulsa sobre apuntesprogramaciónVisual Basic 6.0 y bajate el archivo.

Ya nos contarás...:)

57
Visual Basic 6.0 e inferiores / Re: como pongo iconos en el menu ?????
« en: Viernes 16 de Mayo de 2003, 17:51 »
Observador no te enfades, llevaba una temporada entrando y saliendo de distintos foros y no anoté de quién era

Pedirte disculpas y a ver si nuestro amigo nos dice si le ha ido bien.

Y sí, efectivamente funciona

Gracias Observador!:gracias:

58
Visual Basic 6.0 e inferiores / AYUDA DATAGRID
« en: Jueves 15 de Mayo de 2003, 20:08 »
Buenas Bera he estado mirando esto y no me salgo y se me hace tarde, pero te dejo esto que encontré por algún lugar
por si te sirve:

CheckBox en DBGrid...

El Grid tiene una propiedad Columns que hace referencia a la columna encuestion. La columna
tiene otro objeto ValueItems que determina el aspecto de la columna. La propiedad Presentation
de este objeto determina el modo de presentación. El valor 4 representa a un checkbox.

TDbGrid1.Columns(1).ValueItems.Presentation = 4
:kiss:

59
Visual Basic 6.0 e inferiores / Re: como pongo iconos en el menu ?????
« en: Jueves 15 de Mayo de 2003, 19:02 »
Buenas!
Te paso un fichero que encontre por ahí con código sobre este tema espero que vaya bien. Si lo pruebas deja una nota y me dices que tal

Gracias
:guitar:

60
Visual Basic 6.0 e inferiores / Ayuda con DATAGRID Urgente!!!
« en: Martes 13 de Mayo de 2003, 18:31 »
buenas!

Te paso algo que encontré por la red por si quieres probarlo, (es con un DBGrid):
CheckBox en DBGrid...

El Grid tiene una propiedad Columns que hace referencia a la columna encuestion. La columna
tiene otro objeto ValueItems que determina el aspecto de la columna. La propiedad Presentation
de este objeto determina el modo de presentación. El valor 4 representa a un checkbox.

TDbGrid1.Columns(1).ValueItems.Presentation = 4


:suerte:

61
Visual Basic 6.0 e inferiores / Ayuda Urgente!
« en: Martes 13 de Mayo de 2003, 18:27 »
Quisiera ayudarte pero después de leermelo 10 veces sigo sin entender cual es su problema

Saludos y :suerte:

62
Visual Basic 6.0 e inferiores / GRABAR DATOS EN ACCESS
« en: Martes 13 de Mayo de 2003, 18:17 »
Quizá puedas controlar en cada operación (añadir, borrar, ...) los errores con el siguiente código:

...
   On error Goto ErrorEnOperacion
   ' Código que efectua la operación
   exit sub ' o function o lo que sea
ErrorEnOperacion:
   'Código de tratamiento del error
   ' puedes hacerles esperar
...


Esta solución puede ser algo cutre pero igual ya te soluciona el problema, a ver si alguien se anima y nos explica algo mejor


Saludos!:suerte:

63
Necesito ayuda para lo siguiente (ADO y Sql):

1.- Una vez abierto un recordset en el cual hemos ejecutado una consulta, queremos lanzarle una nueva consulta a este mismo recordset, el resultado guardarlo en otro recordset y que no se toque para nada la base de datos.

2.- Si tenemos dos conexiones a dos bases de datos queremos ejecutar una consulta con sql en la cual intervienen campos de tablas de las dos bases de datos ¿Cómo hacerlo?

Gracias a todos!!!

Páginas: 1 2 [3]