|
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 - Widark
Páginas: 1 ... 4 5 [6] 7 8 ... 12
126
« en: Miércoles 19 de Octubre de 2005, 18:00 »
Que tal JMAlonso! visita este link
127
« en: Martes 18 de Octubre de 2005, 17:14 »
Como les baila?
Quisiera saber, de una lista de indices unicos, cuando aparece el error : "Campo unico duplicado" cual de tantos es el que se repite?
muchas gracias por la atencion prestada.
128
« en: Sábado 15 de Octubre de 2005, 17:33 »
Que tal Barri!
El comando USE te sirve para abrirlas, mira en la ayuda para más información.
129
« en: Sábado 15 de Octubre de 2005, 01:07 »
Que tal! Dim Cnx As ADODB.Connection Dim pth As String 'Database Path Dim Ctl As ADOX.Catalog 'Database Catalog from Actual Connection Dim CtlTbl As ADOX.Table Dim Col As ADOX.Column Dim sGen As String Dim i As Integer Dim j As Integer Dim k As Integer Private Sub cmdConectar_Click() On Error GoTo ErrGetPath ' Establece CancelError a Verdadero cdlBasedatos.CancelError = True ' Establece banderas cdlBasedatos.Flags = cdlOFNHideReadOnly ' Establece filtros cdlBasedatos.Filter = "All Files(*.*)|*.*|Access 2000 DB (*.mdb)|*.mdb" ' Especifica filtro por defecto cdlBasedatos.FilterIndex = 2 cdlBasedatos.ShowOpen pth = cdlBasedatos.FileName If LenB(pth) > 0 And LenB(Dir(pth)) > 0 Then Coneccion If Not (Cnx Is Nothing) Then LlenaTabla End If End If Exit Sub ErrGetPath: 'User pressed the Cancel button pth = vbNullString End Sub Sub Coneccion() On Error GoTo CnnError Dim strCnn As String strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;" strCnn = strCnn & "Data Source=" & pth & ";" strCnn = strCnn & "Jet OLEDB:Engine Type=5;" Set Cnx = New ADODB.Connection Cnx.Open strCnn Exit Sub CnnError: Dim psw As String Select Case Err Case Is = -2147217843 'Database password incorrect psw = ObtainPassword strCnn = vbNullString strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;" strCnn = strCnn & "Data Source=" & pth & ";" strCnn = strCnn & "Jet OLEDB:Engine Type=5;" strCnn = strCnn & psw If LenB(psw) = 0 Then Resume Next Else Resume End If Case Else MsgBox "Error Number : " & Err & vbCrLf & Error, vbCritical, Err.Source End End Select End Sub Sub LlenaTabla() On Error GoTo ErrorTab Screen.MousePointer = vbHourglass Set Ctl = New ADOX.Catalog Ctl.ActiveConnection = Cnx i = 0 'Table Definitions For Each CtlTbl In Ctl.Tables If CtlTbl.Type = "TABLE" Then lstTablas.AddItem CtlTbl.Name End If Next Screen.MousePointer = vbDefault Exit Sub ErrorTab: MsgBox Err.Description, vbCritical Screen.MousePointer = vbDefault End Sub Private Function ObtainPassword() As String Dim psw As String psw = vbNullString Do While Len(psw) = 0 frmLogin.Show vbModal psw = frmLogin.Password If frmLogin.NoMore Then ObtainPassword = vbNullString Exit Do End If Loop If Len(psw) > 0 And (Not frmLogin.NoMore) Then ObtainPassword = ";Jet OLEDB:Database Password=" & psw & ";" Unload frmLogin Else MsgBox "Entre el password correcto.", vbExclamation ObtainPassword = vbNullString Set Cnx = Nothing Unload frmLogin End If End Function
Este es un ejemplo que descargue de freecode y utiliza ADOX. Este es con DAO Private Sub cmdBasedatos_Click() Dim tblObj As TableDef On Error GoTo errCancelCommon Abierto = False Adiciono = False cdlBasedatos.CancelError = False cdlBasedatos.ShowOpen If Len(cdlBasedatos.FileName) <> 0 Then cmdCodigos.Enabled = True On Error Resume Next Set Cnx = New ADODB.Connection With Cnx For i = 0 To 5 Step 0.1 .CursorLocation = adUseClient .ConnectionString = "Provider=Microsoft.Jet.OLEDB." & Replace(Format(i, "0.0"), ",", ".") & ";Persist Security Info=False;Data Source=" & cdlBasedatos.FileName & ";Jet OLEDB:Database Password=;" .Open If .State = 1 Then Exit For Next If .State = 0 Then MsgBox "No se encontró una versión adecuada para iniciar el motor de la BD.", vbCritical, "Error al iniciar" .Close End Else Abierto = True cmbTablas.Clear 'Abró la base de datos y lo asigno a la variable Set gdbCurrentDB = DBEngine.OpenDatabase(cdlBasedatos.FileName, False, False, ";pwd=") For Each tblObj In gdbCurrentDB.TableDefs If (tblObj.Attributes And dbSystemObject) = 0 Then 'Valido que las tablas no sean del sistema, adiciono al combo cmbTablas.AddItem tblObj.Name End If Next End If End With End If Exit Sub errCancelCommon: End Sub
Espero les sirva
130
« en: Viernes 14 de Octubre de 2005, 18:13 »
Que tal Juez! gracias por tu respuesta, ese modulo ya lo tenia, y si me saca el error que el indice esta repetido (en realidad dice que ha sido violado) en realidad lo que yo quiero es que antes de guardar me diga que ya esta repetido, en otro formulario tengo casi lo mismo, y cuando llega a la linea TABLEUPDATE() Try intercepta el error y ahí pongo mi mensage, pero en este espera hasta que se mueva, ya no se que hacer...
131
« en: Miércoles 12 de Octubre de 2005, 21:17 »
Claro, y solo por hoy pondré el código con que cargo el formulario, solo es oferta  : Este codigo va en un metodo que cree para el formulario CargaControles: PARAMETERS Carpeta as String, TablaCampos as String, TablaDigitacion as String Public loErr AS Exception Local loSuccess as Boolean, loTop as Integer LOCAL loObjeto as String, loOrigenDatos as String, loControl as String, loPrefijo as String &&Prefijo del nombre del Control LOCAL loTablaAbierta as String &&La tabla que se abrira para el combo Try SET MULTILOCKS ON USE FULLPATH(CURDIR()) + ALLTRIM(Carpeta) + "\" + TablaCampos IN 0 loSuccess = CURSORSETPROP("Buffering",5,TablaCampos) IF loSuccess = .T. MESSAGEBOX("Se ha conectado a la Tabla " + TablaCampos + " con exito.",64,"Enlace a Datos") SET ORDER TO Posicion COPY TO Array loCamposFijos FIELDS nomcampo,etiqueta,tipcontrol,relacion,requerido FOR Aparece = .T. EndIf loSuccess = .F. USE FULLPATH(CURDIR()) + ALLTRIM(Carpeta) + "\" + TablaDigitacion IN 0 loSuccess = CURSORSETPROP("Buffering",5) IF loSuccess = .T. MESSAGEBOX("Se ha conectado a la Tabla " + TablaDigitacion + " con exito.",64,"Enlace a Datos") SELECT 2 loTop = 38 FOR I = 1 TO ALEN(loCamposFijos,1) WAIT WINDOW "Creando los campos para la digitación." NoWait AdicionControles(ThisForm, 'lbl' + ALLTRIM(loCamposFijos(I,1)), "Label", loTop, 5,; FSIZE(ALLTRIM(loCamposFijos(I,1))) + 3, ALLTRIM(loCamposFijos(I,2))) IF loCamposFijos(I,3) = "Normal" IF TYPE(FIELD(ALLTRIM(loCamposFijos(I,1)))) = "L" loControl = "CheckBox" loPrefijo = "chk" ELSE IF FSIZE(ALLTRIM(loCamposFijos(I,1))) < 49 loControl = "TextBox" loPrefijo = "txt" ELSE loControl = "EditBox" loPrefijo = "edt" EndIf EndIf ELSE loControl = "ComboBox" loPrefijo = "cmb" EndIf loObjeto = loPrefijo + ALLTRIM(loCamposFijos(I,1)) loOrigenDatos = '"' + TablaDigitacion + "." + ALLTRIM(loCamposFijos(I,1)) + '"' AdicionControles(ThisForm, loObjeto, loControl, loTop, 99,; FSIZE(ALLTRIM(loCamposFijos(I,1))) + 3, "") ThisForm.&loObjeto..ControlSource = &loOrigenDatos ThisForm.&loObjeto..Tag = IIF(loCamposFijos(I,5) = .F.,"N","S") IF loControl = "ComboBox" loTablaAbierta = ALLTRIM(loCamposFijos(I,4)) IF NOT USED(loTablaAbierta) USE FULLPATH(CURDIR()) + "Globales\" + loTablaAbierta IN 0 EndIf loOrigenDatos = loTablaAbierta + ".descripcio,codigo" ThisForm.&loObjeto..ColumnWidths = "190,50" ThisForm.&loObjeto..BoundColumn = 2 ThisForm.&loObjeto..ColumnCount = 2 ThisForm.&loObjeto..FirstElement = 1 ThisForm.&loObjeto..RowSourceType = 6 ThisForm.&loObjeto..RowSource = loOrigenDatos EndIf loTop = loTop + ThisForm.&loObjeto..Height + 5 Next ThisForm.txtColor1.ControlSource = "Daniel.color" EndIf SELECT &TablaDigitacion EstadoControles(ThisForm, .F.) Desplazamiento (ThisForm, 92) Catch To loErr MESSAGEBOX(loErr.Message,48,"Error") EndTry
Este es con el que guardo: Local strClase as String, intCo as Integer, loErr as Exception Try FOR intCo = 1 TO ThisForm.ControlCount IF INLIST(ThisForm.Controls(intCo).BaseClass,"Textbox","Editbox","Combobox") IF ThisForm.Controls(intCo).Tag = "S" AND ALLTRIM(ThisForm.Controls(intCo).Value) = "" Messagebox("Debe llenar " + ThisForm.Controls(intCo - 1).Caption + " para guardar.",48,"Faltan Datos") Cancel EndIf ELSE IF ThisForm.Controls(intCo).BaseClass = "Checkbox" IF ThisForm.Controls(intCo).Tag = "S" AND ThisForm.Controls(intCo).Value = .F. Messagebox("Debe llenar " + ThisForm.Controls(intCo - 1).Caption + " para guardar.",48,"Faltan Datos") Cancel EndIf EndIf EndIf Next TABLEUPDATE() IF BAdicion GO BOTTOM EndIf BAdicion = .F. BEdicion = .F. Desplazamiento (ThisForm, 92) EstadoControles(ThisForm, .F.) BotonesEdicion (ThisForm, .T.) Catch To loErr IF loErr.ErrorNo = 1884 Messagebox("Este registro esta Repetido.",16,"Dato Repetido") ThisForm.txtPosicion.value = mAnterior ELSE Messagebox(loErr.Message,48,"Error") EndIf Finally ThisForm.Refresh() EndTry
y este es el de cancelar: TABLEREVERT() IF Bmk <> 0 GO Bmk EndIf BAdicion = .F. BEdicion = .F. Desplazamiento (ThisForm, 92) EstadoControles(ThisForm, .F.) BotonesEdicion (ThisForm, .T.) ThisForm.Refresh()
Muchas gracias por tu atención.
132
« en: Martes 11 de Octubre de 2005, 23:01 »
Gracias Juez Funciono una parte, ahora si me avisa que el indice se esta duplicando pero cuando cancelo la accion o trato de guardar aparece el mensaje que la tabla debe tener buffer de registro o tabla. ¡HELP!
133
« en: Martes 11 de Octubre de 2005, 16:51 »
Que tal Juez, encantado de saludarte de nuevo  ! Resulta que no hay error, y ese es el problema, cree un campo unico en una "Free Table" y cuando repito el dato en ese campo y lo guardo no pasa nada, no hay error de indice repetido ni algo parecido, el error aparece cuando me muevo adelante o atrás y lo mas raro es que en otro formulario (con otra tabla) lo hago igual y si se genera el error de indice duplicado.
134
« en: Jueves 6 de Octubre de 2005, 23:37 »
Me gusto muchos la pagina, que bien por vos JuanK
135
« en: Jueves 6 de Octubre de 2005, 23:19 »
136
« en: Jueves 6 de Octubre de 2005, 17:57 »
Hola como estan? Tengo 2 problemas: 1. Cargo unos controles en el form de forma vertical, el formulario tiene un tamaño fijo. Tengo unos botones de edicion y cuando bajen con el scroll del form estos controles de edicion se deben mantener visibles. 2. Cargo en tiempo de ejecucion una tabla, tiene un campo unico, hize la prueba repitiendo un dato para que me apareciera el error y al momento de guardar no sale nada todo pasa normal, el error me aparece luego cuando me desplazo o cierro el formulario no se que pueda ser. El codigo que uso para abrir la tabla es el siguiente: SET MULTILOCKS ON SELECT 0 USE FULLPATH(CURDIR()) + ALLTRIM(Carpeta) + "\" + TablaCampos loSuccess = CURSORSETPROP("Buffering",5)
Muchas gracias por la atencion prestada.
137
« en: Viernes 30 de Septiembre de 2005, 00:58 »
Hola extended!
Yo lo haria con un campo logico, que se chequea cuando el usuario lo pasa al listview luego agregaria los campos que esten checkeados y a lo que termine la operación los deseleccionaria.
138
« en: Viernes 30 de Septiembre de 2005, 00:48 »
Que tal! No entiendo para que son las comillas simples en la consulta (a menos que sean para algun tipo de Requery o algo por el estilo, pero no lo creo), Si quieres que el recordset te traiga tu criterio debes hacerlo al momento que pides los datos y no antes, además la variable solo la dimensionas en el evento click así que no estara disponible en el Load. Yo lo haria así Private Sub cmdIngresar_Click() Dim getCedula As String getCedula = InputBox("Nro de Cedula:") With rst1 .Open "SELECT * FROM ControlHora WHERE Cedula = " & getCedula & ", db, adOpenDynamic, adLockOptimistic txtCedula = rst1!Cedula txtNombre = rst1!Nombre End With End Sub
lo que dice lop7 de la cedula es cierto si es texto la apertura del recordset cambia y quedaria así: .Open "SELECT * FROM ControlHora WHERE Cedula = '" & getCedula & "', db, adOpenDynamic, adLockOptimistic
saludos.
139
« en: Jueves 29 de Septiembre de 2005, 17:48 »
Hola sbo01! Cuando das Delecte() lo que hace es poner una marca de borrado al lado izquierdo de la tabla. Para eliminarlos completamente das el comando Pack, ej: Use CualquierTabla Delete For nombre = "Elquesea" Pack &&Elimina los registros marcados para borrar
para recuperar los que marcaste para borrar (con Delete) utilizas Recall. Saludos.
140
« en: Martes 27 de Septiembre de 2005, 23:19 »
Listo, Cyclop as estare esperando
141
« en: Lunes 26 de Septiembre de 2005, 18:11 »
Hola criman! Este es el codigo para poner tu hoja horizontal desde vb NombredelDocumento.PageSetup.Orientation = wdOrientLandscape
espero te ayude.
142
« en: Lunes 26 de Septiembre de 2005, 15:37 »
Que tal mbrenes!
1. Primero debes enlazarlos, como una base de datos normal. 2. Hay una funcion TABLEUPDATE() y TABLEREVERT(), pones el buffer de la en 3 y listo ya podes actualizar o cancelar alguna acción.
143
« en: Sábado 24 de Septiembre de 2005, 17:43 »
 DrakerDG! Con lo que posteste hize lo siguiente: loTObjeto = PADC("", FSIZE(ALLTRIM(loCamposFijos(I,1))) + 3, "O") &&Relleno una variabla con el tamaño del campo ThisForm.&loObjeto..Width = TXTWIDTH(loTObjeto,"Tahoma",8) * FONTMETRIC(6,"Tahoma",8) &&Calculo el ancho del
Aunque no parece nada del otro mundo, pero padeci por esto, muchas gracias.
144
« en: Sábado 24 de Septiembre de 2005, 00:11 »
Como les baila? Quisiera saber como puedo calcular el ancho de los textos dependiendo el tamaño del campo  , es como lo que ocurre cuando se arrastran los campos desde el DataEnvironmet al formulario, que vienen con el Width segun el campo que le corresponde. He visto la funcion TXTWIDTH() y FONTMETRIC(), pero no entiendo (mi ingles definitivamente no esta nada bien) bien su finalidad pienso que alguna combinacion de ellos puede dar lo que busco, pero  . Cualquier comentario, guia, referencia lo agradecere mucho.
145
« en: Viernes 23 de Septiembre de 2005, 15:53 »
Gracias Cyclop, por tu respuesta la aplique y funciona, lo unico que no aplique fue lo del sys() busque en la ayuda "Sys(<No recuerdo el numero para el campo unico>)" campo unico y no vi nada, debe ser que ya estaba agotado, de nuevo muchas gracias  .
146
« en: Viernes 23 de Septiembre de 2005, 15:25 »
 , gracias DrakerDG! solo hize el comentario por que me lo hicieron y no encontre en la ayuda la capacidad de el tipo de variable String, ya lo probe y me deja mucho más tranquilo, gracias por tu respuesta.
147
« en: Viernes 23 de Septiembre de 2005, 01:31 »
Gracias Cyclop!
lo que pasa es en la Tabla de origen guardo la estructura de la tabla que voy a generar ej: Etiqueta | Nomcampo | Tipcampo | Tamcampo Alguna | campo1 | C | 20 Varias | campo2 | L | 01
La tabla que se generará en resumen seria así: Create Table (Nomcampo Tipcampo(tamcampo)), lo cual quiere decir que seria así: Create Table ('campo1' C(20), 'campo2' L(01)). DrakerDG me sugirio que guardara eso en un string y si no estoy mal el tipo de dato string almacena 255 caracteres.
148
« en: Jueves 22 de Septiembre de 2005, 22:44 »
Como estan?  Tengo un formulario al cual le envio la ruta de una tabla para que se enlaze con ella y cargue unos textos o combos, hasta ahí es bien. Pero cuando quiero hacer referencia al control que cree por el nombre no se como, así que lo hize de la siguiente forma ThisForm.AddObject('txt' + ALLTRIM(loCamposFijos(I,1)),'TextBox') Ultimo = ThisForm.ControlCount ThisForm.Controls(Ultimo).Top = loTop ThisForm.Controls(Ultimo).Left = loLeft ThisForm.Controls(Ultimo).Visible = .T.
La primera pregunta es ¿Quisiera saber si hay una forma más técnica o mejor de hacer la referencia al ultimo objeto que cree?. 2. Como lo quiero enlazar con el campo de la tabla lo hago de la siguiente forma ThisForm.Controls(Ultimo).ControlSource = TablaDigitacion + '.' + ALLTRIM(loCamposFijos(I,1))
pero me dice que no reconoce la variable (donde esta el alltrim). Como puedo enlazarlo? Muchas gracias por sus comentarios.
149
« en: Jueves 22 de Septiembre de 2005, 17:59 »
Gracias, por tu respuesta DrakerDG! El codigo quedo así: LOCAL loCarpeta as String, loCrear as Boolean, loEjecutaCrear as String DIMENSION GeneraTabla(1,1) IF EMPTY(strTablaActiva) MESSAGEBOX("No hay ninguna tabla activa.",64,"Generar Tabla") ELSE IF BOF() AND EOF() MESSAGEBOX("No hay registros para crear la Tabla.",64,"Generar Tabla") ELSE loCarpeta = GETFILE('DBF','','Crear',1,'Crear tabla') IF NOT EMPTY(loCarpeta) loCrear = .T. IF FILE(loCarpeta) = .T. Result = MESSAGEBOX("¿Este archivo ya existe desea remplazarlo?",4 + 32) IF Result = 6 loCrear = .T. ELSE loCrear = .F. EndIf EndIf IF loCrear = .T. PosicionB = RATC("\",loCarpeta) && Posicion del primer backslash de derecha a izquierda Extencion = LEN(ALLTRIM(loCarpeta)) - (PosicionB + 4) && Para quitar la extencion con s strEspacio = SUBSTR(loCarpeta,PosicionB + 1,Extencion) IF AT(" ",strEspacio) > 0 MESSAGEBOX("El nombre de la Tabla no puede contener espacios.",64) ELSE DIMENSION GeneraTabla(RECCOUNT(),3) && Dimensiono el Vector para los Campos Bmk = RECNO() GO TOP loEjecutaCrear = "Create Table " + loCarpeta + "(" I = 1 DO WHILE NOT EOF() loEjecutaCrear = loEjecutaCrear + "'" + ALLTRIM(nomcampo) + "'"; + SPACE(1) + ALLTRIM(tipocampo) + "(" + ALLTRIM(tamcampo) + ")" IF I < RECCOUNT() loEjecutaCrear = loEjecutaCrear + ", " I = I + 1 EndIf Skip EndDo loEjecutaCrear = loEjecutaCrear + ")" &loEjecutaCrear EndIf EndIf EndIf EndIf EndIf
150
« en: Jueves 22 de Septiembre de 2005, 16:44 »
Hola solitario_lobo! Private Sub dgGrilla_HeadClick(ByVal ColIndex As Integer) rsRecordSet.Sort = dgGrilla.Columns(ColIndex).DataField End Sub
saludos.
Páginas: 1 ... 4 5 [6] 7 8 ... 12
|
|
|