Hola Alguna dirección donde haya un minimanual de bases de datos en visual basic y con ejemplos.
Gracias.
| ||||
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila |
| ||||
![]() ok, no me sirvieron. Que conste que antes de ponerla siempre miro para no tener que molestar y preguntar. Expongo la duda: Tengo este código, este código lo que hace es coge el texto de Text1.text y lo divide en palabras añadiendo, la palabra Añadido, que más adelante sera la consulta de una base de datos. Y en text2.text introduce el texto + Añadido. Private Sub Command1_Click() Dim i As Integer Dim palabras As Variant palabras = Split(Text1.Text) For i = 0 To UBound(palabras) Añadir(palabras) // Llamada a la función Añadir, esto es lo que no va Text2.Text = Text2.Text & " " & palabras(i) + " [" + Añadido+ "]" Next i End Sub En la función añadir: Esta función recoge el valor que pasa por la funcion Añadir(palabras) y genera la consulta SQL en la base de datos. Bueno Debería porque no lo hace. Y debereía devolverla junto con la palabra [campo3] para que arriba lo añada al text2.text. Es decir: palabra[campo3] y asi con cada palabra del text1.text Sub Añadir(palabras As String) SQLTmp = "SELECT campo3 FROM miha WHERE campo1='palabras'" Dim Db As Database 'Variable para las Bases de Datos Set Db = OpenDatabase("data.mdb") On Error Resume Next Db.Execute SQLTmp, dbFailOnError If Err Then MsgBox "Se ha producido un error al ejecutar la orden:" & vbCrLf & SQLTmp End If End Sub Muchas Gracias por la atención prestada.
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. Última edición por MeXiCaN; 22/11/2005 a las 04:30 |
| ||||
¿Alguien tiene idea?
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| ||||
Cita: en eso código intentas agregar algo.. eso es una consulta cierto...?
Iniciado por MeXiCaN Sub Añadir(palabras As String) SQLTmp = "SELECT campo3 FROM miha WHERE campo1='palabras'" Dim Db As Database 'Variable para las Bases de Datos Set Db = OpenDatabase("data.mdb") On Error Resume Next Db.Execute SQLTmp, dbFailOnError If Err Then MsgBox "Se ha producido un error al ejecutar la orden:" & vbCrLf & SQLTmp End If End Sub Muchas Gracias por la atención prestada. nos vemos...
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila |
| ||||
Es que no se como recoger el resultado de la consulta, y como devolverlo a la función original. Pero creo que por lo demás esta todo correcto, no?
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| ||||
Set Db = OpenDatabase("data.mdb") aqui tendrías que ser... Set Db = OpenDatabase("c:\data.mdb") ' por ejemplo que esté en el C: Nos vemos..
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila |
| ||||
Eso lo tengo bien, lo puse para poner el ejemplo. Poniendo eso bien alguna sugerencia.
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| ||||
bueno ahora agrega un recordset. dim Rs as new Recordset SET Rs = new Recordset Rs.Open SqlTemp,DB, adOpenStatic, adLockOptimistic msgbox rs(0) quitale al Db.execute el SqlTemp y lo pones en el recordset.
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila |
| ||||
Cita: Error de compilacion, no se encontro el método o miembro de datos Sub Mirar(palabras As Variant) SQLTmp = "SELECT tabla.campo3 FROM tabla WHERE campo1='palabras'" Dim Db As Database 'Variable para las Bases de Datos Dim Rs As New Recordset Set Db = OpenDatabase("C:\data.mdb") Set Rs = New Recordset Rs.Open SqlTemp, Db, adOpenStatic, adLockOptimistic On Error Resume Next Db.Rs SQLTmp, dbFailOnError MsgBox Rs(0) If Err Then MsgBox "Se ha producido un error al ejecutar la orden:" & vbCrLf & SQLTmp End If Db.Close End Sub
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| ||||
es porque no hay nada en la consulta.. hace una consulta donde hallan más datos . para manejar esto... hace esto.. if Rs.Bof = False then MsgBox Rs(0) end if
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila |
| ||||
El mismo Error. Da el mismo error.
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| ||||
bueno yo la verdad no manejo la apertura de la db de esta menra Set Db = OpenDatabase("C:\data.mdb") lo hago así Set Db = new Database db.Open (Colocas el Driver y que base dedatos vas a usar) db.cursolorLocation = cliente ' busca el correcto lo estoy haciendo al calculo. y depues lo del recordset.
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila |
| ||||
ok, buscaré haber si encuentro algo sobre basos de datos una vez tenga algo lo posteo, haber si sirve tambien para las faqs y retomamos el tema ok, Geoavila? Gracias igualmente.
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| |||
Siempre salvandote las papas.... a lo que vos le decis funcion es solo un procedimiento, los procedimientos no devuelven valores y las funciones si. aca te paso como hacerlo, para que funcione acordate de ir a el menu Proyecto->Referencias y ahi seleccionar alguna de microsoft DAO Private Sub Command1_Click() Dim i As Integer Dim palabras As Variant palabras = Split(Text1.Text) For i = 0 To UBound(palabras) Text2.Text = Añadir(palabras(i)) & " " & "Añadido" Next i End Sub Public Function Añadir(palabras As String) As String Dim base As Database Dim tmiha As Recordset Dim campo_campo3 As Field Set base = OpenDatabase(App.Path & "\data.mdb") Set tmiha = base.OpenRecordset("SELECT campo3 FROM miha WHERE campo1='palabras'") Set campo_campo3 = tmiha.Fields("campo3") If tmiha.RecordCount < 1 Then MsgBox ("No existe el registro") Añadir = "" else Añadir = palabra & " " & campo_campo3 endif End Function
__________________ Buby Systems |
| ||||
Gracias Bubilo, lo probaré, pero sin tan mal te sabia contestarme no haberlo hecho.
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| ||||
ok, pues entonces nada, pero la proxima vez ![]() ![]() ![]() Muchas gracias, en cuanto pueda pruebo el código y si no al ataque con él. Mucahs gracias de nuevo.
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| ||||
Hola bubilo: Me peta en la funcion Añadir me dice que se esperaba una función o una variable. Cita: 'Private Sub Command1_Click() 'Dim i As Integer 'Dim palabras As Variant 'palabras = Split(Text1.Text) 'For i = 0 To UBound(palabras) 'Text2.Text = Añadir(palabras(i)) & " " & "Añadido" 'Next i 'End Sub 'Public Function Añadir(palabras As String) As String 'Dim base As Database 'Dim tmiha As Recordset 'Dim campo_campo3 As Field 'Set base = OpenDatabase(App.Path & "\data.mdb") 'Set tmiha = base.OpenRecordset("SELECT campo3 FROM miha WHERE campo1='palabras'") 'Set campo_campo3 = tmiha.Fields("campo3") 'If tmiha.RecordCount < 1 Then 'MsgBox ("No existe el registro") 'Añadir = "" 'Else 'Añadir = palabra & " " & campo_campo3 'End If 'End Function
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| |||
LISTO MEXICAN NO SE CUAL ERA EL ERROR QUE TE DABA PERO YA LO ARREGLE Y LO PROBE EN UNA BASE IGUAL A LA TUYA Y FUNCIONA PERFECTO... CUALQUIER COSA AVISA... Private Sub Command1_Click() Dim i As Integer Dim palabras As Variant palabras = Split(Text1.Text) For i = 0 To UBound(palabras) Text2.Text = Text2.Text & " " & Añadir(CStr(palabras(i))) & " " & "Añadido" Next i End Sub Public Function Añadir(palabras As String) As String Dim base As Database Dim tmiha As Recordset Dim campo_campo3 As Field Set base = OpenDatabase(App.Path & "\data.mdb") Set tmiha = base.OpenRecordset("SELECT * FROM miha WHERE campo1 = '" & palabras & "'") Set campo_campo3 = tmiha.Fields("campo3") If tmiha.RecordCount < 1 Then MsgBox ("No existe el registro") Añadir = "" Else Añadir = palabras & " " & campo_campo3 End If End Function
__________________ Buby Systems |
| ||||
De nuevo aquí. Bubilo me da un error '13' en tiempo de ejecucion. No coinciden los tipos. ¿Os suena este error? Y cuando le doy a depurar la linea que me señala es la de: Set tmiha = base.OpenRecordset("SELECT campo3 FROM miha WHERE campo1 = '" & palabras & "'")
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| ||||
Los dos campos son de tipo texto, pero el error insiste.
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| ||||
¿GeoAvila tu no sabrás porque nos da este error?
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| |||
Hola mexican, lo estube probando bien y me funciona de maravillas si queres pasame el proyecto junto con la base a mi mail y veo que es lo que estas haciendo mal el error que te tira es que esta mal declarada una variable... asi que pasamelo y te lo arreglo..
__________________ Buby Systems |
| ||||
Bueno revisa si dentro de la tabla no usas alguna palabra reservada como User o esas cosas pasalo todo a español sin una la "ñ" y sin espacios y veremos pienso que algún error interno de access con alguna palabra reservada... pero miremos a ver que sucede.. nos vemos..
__________________ * Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ Sitio http://www.geoavila.com twitter: @GeoAvila Última edición por GeoAvila; 29/11/2005 a las 08:35 |
| ||||
Bubilo ya esta mandado!! Espero que el correo que tienes en el perfil funciones, o no lo hayas cambiado. ![]()
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| |||
me llego el archivo perfecto.. te cuento cual es tu error en las referencias que seleccionas en tu proyecto microsoft dao, microsoft world etcc.. estas tienen niveles de jerarquia o sea que la que se encuentra mas arriba es la mas importante y vos tenias una referencia a activex data objets 2.5 arriba de la de dao 3.6 asi que aparentemente te tomaba la consulta sql como si fuera de ese control y mandaba el error porque debe ser diferente la sintaxis. solucionalo de esta forma en la ventana de referencias selecciona dao 3.6 y hace click en la flechita para arriba de prioridad hasta que este abajo de OLE automation. asi se va a solucinar tu problem. PD: por mas que lo analize y mire mil veces no entiendo para que es el programita que estas haciendo.... jeje ![]() ![]() ![]()
__________________ Buby Systems |
| ||||
Muchas Gracias Bubilo
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |
| ||||
Muchas Gracias Bubilo y una duda más. He quitado algunas cositas
Código:
Private Sub Command1_Click() Dim i As Integer Dim palabras As Variant palabras = Split(Text1.Text) For i = 0 To UBound(palabras) Text2.Text = Text2.Text & " " & Añadir(CStr(palabras(i))) & " " Next i End Sub Public Function Añadir(palabras As String) As String Dim base As Database Dim tablanueva As Recordset Dim campo_campo3 As Field Set base = OpenDatabase(App.Path & "\database.mdb") Set tablanueva= base.OpenRecordset("SELECT * FROM tabla WHERE campo1='" & palabras & "'") Set campo_campo3 = tablanueva.Fields("campo3") If tmiha.RecordCount < 1 Then Añadir = palabras & " " & "[Sin Concordancia]" Else Añadir = palabras & " " & "[" & campo_campo3 & "]" End If End Function No se si has probado el fichero que te pase pero por ejemplo en el fichero hay un la, que el programa me responde [Sin Corcondancia], pero sin embargo en la base de datos si que está. ¿puede ser debido a algún espacio en blanco? Y si es así ¿como podría quitarlo?.
__________________ Un saludo, MeXiCaN :golpeado: :adios: Poco es tanto, cuando poco necesitas. E.Bunbury Siempre que haya una causa noble por la que luchar, siempre habrá ladrones que la apoyarán. |