Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-09-2006
drkvergil drkvergil is offline
Registrado
 
Registrado: ago 2006
Posts: 7
Poder: 0
drkvergil Va por buen camino
Thumbs down Actualizar Registros

Hola

Otra vez yo
disculpen pero kisiera saber como se le hace para actualizar un registro en Interbase ya que tengo un aplicacion que primero me pide que le de la tabla q kiero ver depues si kiero hacer una busqueda de algun registro, si lo encuentra se le dda la opcion de poder modificarlo o borrarlo.

Lo del borrado me sale perfecto pero la modificacion no y eske se supone q tengo un IBDataSet que es dond esta la opcion de midifysql y ahi es donde lo pongo pero lo q hago diferente es q despues de q selecciono la tabla ahi intento introducir la sentecnia de modificacion por q obviamente no puedo ponerla desde le principio puesto q no c q tabla poner en al instruccion y por ende tampoco el indice para hacer la actualizacion asi q depues de q me da la tabla inento poner la sentencia q es la siguiente

Código Delphi [-]
  IBDataSetCons.ModifySQL.Clear;
  IBDataSetCons.ModifySQL.add('UPDATE');
  IBDataSetCons.ModifySQL.Add(Tabla);
  IBDataSetCons.ModifySQL.Add('SET');
  IBDataSetCons.ModifySQL.Add(Campos);
  IBDataSetCons.ModifySQL.Add('Where');
  IBDataSetCons.ModifySQL.Add(Index);
  IBDataSetCons.ModifySQL.Add('=:');
  Clavem := 'OLD_'+Index;
  IBDataSetCons.ModifySQL.Add(Clavem);

donde Tabla es el nombre de la tabla q guardo en esta variable con un metodo campos es un string q con otro metodo genero para poner todos los campos que tienen de la siguiente manera: Campo=:Campo,
y asi todos los campos y esa es la variable campos Index es el indice d la tabla q obtengo de la tabla y clavem es, si ven el mismo indice pero modificado para ponerlo asi (OLD_Index) segun yo la sentencia esta bien y depsues selecciono todo de la tabla (osea select * from Tabla) y la activo
pero me manda un error que dice SQL Parse Error: Parameter Name Expected

No se si me falta una instruccion por dar o q pero c que el problema esta en este codigo por q si lo kito o lo comento si me selecciona la base de datos y me y la muestra y si kiero borrar o buscar un registro lo hace pero como kiero modificarlo desde el dbgrid eso es lo q no me deja

por su ayuda y esperando me la puedan otorgar

Gracias
Responder Con Cita
  #2  
Antiguo 11-09-2006
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Loq pasa es que al hacer el query de actualización le esta diciendo qe va a mandar dos parametros (o eso entiendo)... es decir al final le esta quedando algo así como esto:


Código SQL [-]
    update 
        elNombreDeLaTabla 
    set
        elNombreDelCampo = rimerParametro
    where
        index = :segundoParametro

si ese es el query entonces tiene dos opciones...
la primera construir el query como lo esta haciendo y no mandar parametros... para esto deberá quitar los dos puntos (

la segunda es usar los parametros y para esto (y conservando el esquema expusto arriba) deberá agregarle las siguientes lienas antes del select:

Código Delphi [-]
  IBDataSetCons.ParamByName('Campo').asString := valorDeVarCampo;
  IBDataSetCons.ParamByName('oldIndex').asString := valorDeVarOldIndex;

Con esta ultima opcion podrá seguir usando IBDataSetCons con el mismo query y cuando quiera cambiar los valores de campo y de oldIndex solo debera mandarselos como como explique anteriormente.
Responder Con Cita
  #3  
Antiguo 11-09-2006
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Loq pasa es que al hacer el query de actualización le esta diciendo qe va a mandar dos parametros (o eso entiendo)... es decir al final le esta quedando algo así como esto:


Código SQL [-]
    updata 
        elNombreDeLaTabla 
    set
        elNombreDelCampo = : primerParametro
    where
        index = :segundoParametro

si ese es el query entonces tiene dos opciones...
la primera construir el query como lo esta haciendo y no mandar parametros... para esto deberá quitar los dos puntos ( : )

la segunda es usar los parametros y para esto (y conservando el esquema expusto arriba) deberá agregarle las siguientes lienas antes del select:

Código Delphi [-]
  IBDataSetCons.ParamByName('Campo').asString := valorDeVarCampo;
  IBDataSetCons.ParamByName('oldIndex').asString := valorDeVarOldIndex;

Con esta ultima opcion podrá seguir usando IBDataSetCons con el mismo query y cuando quiera cambiar los valores de campo y de oldIndex solo debera mandarselos como como explique anteriormente.
Responder Con Cita
  #4  
Antiguo 12-09-2006
drkvergil drkvergil is offline
Registrado
 
Registrado: ago 2006
Posts: 7
Poder: 0
drkvergil Va por buen camino
Aclaracion

Gracias por tu sugerencia

aunque voy a probar como dices deja ver si era asi por q lo q kiero decir es q est query lo hago para poder modificar los datos desd un dbgrid y los dos puntos segun me habian enseñado es paraq indicarle el campo del dbgrid pero si c lo kito creo no me los reconoce, bueno eso digo yo

y el del index es la llave primaria d la tabla y el OLD_ es un prefijo para decirle q cambie ese registro de esa "antigua llave"

y esq ya ves q para modificarlo en el dbgrid para empezar a introducir datos debe haber el query de modifysql antes de activar el dataset (o al menos eso sabia yo) entonces no c si intentando lo q me djist lo logre pero lo voy a intentar..pero si no me explique bien les ruego me digan por q luego hasta yo me hago bolas

Pero por su atencion gracias

si tienes otro comentario o sugerencia t ruego me lo hagas llegar por favor
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
por que duplicidad de registros con clientdataset sin ingresar registros ...mysql Arturo MySQL 3 05-09-2006 18:39:37
Eliminar y actualizar registros con SQL Jheysson13 SQL 3 28-07-2006 22:32:01
Actualizar de Fb 1.0.2 a Fb 1.5 Sergio J. Firebird e Interbase 5 07-04-2006 12:03:59
actualizar fabriciof Conexión con bases de datos 3 27-05-2004 14:58:56
Como actualizar toda una tabla con bastantes registros? IcebergDelphi Firebird e Interbase 4 16-12-2003 14:08:00


La franja horaria es GMT +2. Ahora son las 09:07:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi