• Martes 25 de Junio de 2024, 00:58

Autor Tema:  MODIFICAR BASE DE DATOS  (Leído 3383 veces)

alfaman

  • Miembro activo
  • **
  • Mensajes: 32
  • Nacionalidad: mx
    • Ver Perfil
    • http://www.as-comitan.com
MODIFICAR BASE DE DATOS
« en: Jueves 5 de Marzo de 2009, 01:57 »
0
Hola buenas a todos, soy novato en el uso de base de datos y tengo algunas dudas sobre ello.

He creado mi basde de datos y ya lo he incluiod en el formulario de builder usando el TABLE,DATASOUSE y DBGRID.
Mi duda es la siguiente.

Como puedo accesar a la tabla desde codigo para poder modificarlo ya que este corriendo el programa, por ejemplo si en la tamabla tengo una lista de productos y precios y cantdiades ejemplo.

PRODUCTOS    PRECIOS     CANTDIADA
    pelotas           10                100
     llaves             29                80

PEDIDO [-----]CANTIDAD[-----]

Que si por ejemplo hay un pedido de 5 pelotas y se acepte, se modifique la base de datos que en la columna de cantidad de pelotas baje a 95

Mas que nada ver cual es la sitaxis que se usa en el BDGrid para que se pueda modificar, aparte si hago una busqueda de alguna cosa me la señala con una flechita, quisiera saver como poder sombrear toda la fila del producto que se encontro en el BDGrid.

Les agardeseria mucho su ayuda.

Saludos

AnimaSubtilis

  • Miembro MUY activo
  • ***
  • Mensajes: 172
  • Nacionalidad: co
    • Ver Perfil
Re: MODIFICAR BASE DE DATOS
« Respuesta #1 en: Jueves 5 de Marzo de 2009, 15:35 »
0
Pues yo utilizo componentes ado me imagino que debe hacerse de la misma manera...

Por mi parte creo en otro form una vista para agregar y modificar datos...

en dicha forma coloco los campos de la tabla mediante a TDBEdit que estan en DataControls

en la propiedad DataSource coloco la tabla designada y en DataFied coloco el campo deseado

en la forma donde se encuentra el dbgrid coloco 2 botones (Insertar,Editar)

En insertar coloco el siguiente codigo

Código: C++
  1.  
  2. void __fastcall TFter::BitBtn1Click(TObject *Sender)
  3. {
  4.  Tter->Open();//abro la tabla
  5.  Tter->Append();//aca le digo que voy a insertar
  6.  Fagrter->ShowModal();//llamo a la forma donde voy a insertar
  7. }
  8.  
  9.  

en Editar

Código: C++
  1.  
  2.  void __fastcall TFter::BitBtn2Click(TObject *Sender)
  3. {
  4.  Tter->Open();//abro la tabla
  5.  Tter->Edit(); //Le digo que voy a editar
  6.  Fagrter->ShowModal();//llamo la forma
  7. }
  8.  
  9.  

en la forma de insercion

al darle Ok en el boton le doy el siguiente codigo

Código: C++
  1.  
  2. void __fastcall TFagrter::BitBtn1Click(TObject *Sender)
  3. {
  4.  if(Fter->Tter->State==dsInsert)//pregunto si es insercion
  5.  {
  6.   Fter->Tter->Post();//grabo informacion
  7.   Fter->Tter->Next();
  8.  }
  9.  if(Fter->Tter->State==dsEdit)//pregunto si es edicion
  10.  {
  11.   if(Application->MessageBox("Desea Guardar los cambios","Advertencia",MB_YESNO)==IDYES)
  12.    Fter->Tter->Post();//grabo informacion
  13.   else
  14.    Fter->Tter->CancelUpdates();
  15.  }
  16. }
  17.  
  18.  

espero que eso sea util..

tauego.........
A menudo unas pocas horas de «prueba y ensayo» podrán ahorrarte minutos de leer manuales.
[size=150]
Dios nos Otorgo el uno y el cero....y con eso creamos un universo....[/size]

[size=109]↑°°°°ÄNÍMÄ §ÛBTÍLͧ°°°°↓[/size]


alfaman

  • Miembro activo
  • **
  • Mensajes: 32
  • Nacionalidad: mx
    • Ver Perfil
    • http://www.as-comitan.com
Re: MODIFICAR BASE DE DATOS
« Respuesta #2 en: Jueves 5 de Marzo de 2009, 18:39 »
0
Hola amigo muchisimas gracias por tu ayuda, gracias a eso he logrado hacer lo que necesitaba  :D
Ahora lo que me ahce falta es saver como sombrear la fila del produto que se encuentra en la busqueda, ejemplo

Si se busca en la seccion de produtos "TECLADO" y se encuentra ver la forma de que aparte de que la flechita indique la fila de ese produto esta tambien se sombree para poder identificar bien el contenido de ese producto :

Les agardeseria mucho su ayuda en ese aspecto .

AnimaSubtilis

  • Miembro MUY activo
  • ***
  • Mensajes: 172
  • Nacionalidad: co
    • Ver Perfil
Re: MODIFICAR BASE DE DATOS
« Respuesta #3 en: Jueves 5 de Marzo de 2009, 18:51 »
0
:rolleyes: ...puss la verdad lo de sombrear una fila nunca lo he hecho....

seria interesante saber como.... :P

Mire lo que yo hago es hacer un filtro de la tabla para que me saque solo lo que yo nescesito ver ...

En TTable en la propiedad filtered=true
en filter ubico una condicion inicial no
estado='activo'
ubico unos edit locales para ingresaar la informacion deseada....
en un boton programo lo siguiente

Código: C++
  1.  
  2. void __fastcall TFter::BitBtn4Click(TObject *Sender)
  3. {
  4.  AnsiString SQL="idtercero <> '' ";
  5.  if(idtercero->Text != "")
  6.   SQL=SQL+"and idtercero= '"+idtercero->Text.Trim()+"'";//ingreso mas valores a la cadena
  7.  if(Edit1->Text.Trim()!="")
  8.   SQL=SQL+"and nombres like '"+Edit1->Text.Trim()+"%'";
  9.  Tter->Filtered=false;//desactivo filtro
  10.  Tter->Filter=SQL;    //iguala la sentencia a ejecutar al filtro de la TTable
  11.  Tter->Filtered=true;// activo el filtro
  12. }
  13.  
  14.  

de esta manera el dbgrid solo queda con los valores que desee...

si haya la forma de que se sombree solo uno me cuenta que seria interesante saerlo

taluego..................
A menudo unas pocas horas de «prueba y ensayo» podrán ahorrarte minutos de leer manuales.
[size=150]
Dios nos Otorgo el uno y el cero....y con eso creamos un universo....[/size]

[size=109]↑°°°°ÄNÍMÄ §ÛBTÍLͧ°°°°↓[/size]


alfaman

  • Miembro activo
  • **
  • Mensajes: 32
  • Nacionalidad: mx
    • Ver Perfil
    • http://www.as-comitan.com
Re: MODIFICAR BASE DE DATOS
« Respuesta #4 en: Jueves 5 de Marzo de 2009, 19:01 »
0
Muy bien gracias lo provare para checar la funcion  :good:

Otra cosa que aca de surgir en las busquedas es que tengo un boton donde programe esto

void __fastcall TForm1::Button1Click(TObject *Sender)
{

if(!Table1->Locate("PRODUCTOS",bus->Text,TLocateOptions()))
{
Beep();
}

es donde indica  la respuesta  ahora lo que no logro hacer es que no idientifique muysuculas o minusculas ya que si no escribo el nombre del produto talcual esta en la base de datos esta no la encuentra por ejemplo si un producto se llama "TECLADO" y pongo "teclado" o "Teclado" esta no la encuentra hasta que pongo tala cual esta "TECLADO", aun no se la forma de ocmo  indiferencia entre mayusculas y minusciulas.

No se si sepas hacer esto, disculpa que sea tan pregunton pero en este aspecto ando muy verde aun jeje

saludos.

gonzalipto

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: MODIFICAR BASE DE DATOS
« Respuesta #5 en: Miércoles 11 de Marzo de 2009, 10:20 »
0
Para identificar si las teclas que pulsas son mayusculas o minusculas te puede servir la funcion isuuper();

check la ayuda de builder y fijate como se usa..

Seguro tenes que programar el evento onkeypress

Disculpa que no te de mas ayuda pero no se como verificar si la palabra entera esta en mayusculas..

Espero que te sirva..

alfaman

  • Miembro activo
  • **
  • Mensajes: 32
  • Nacionalidad: mx
    • Ver Perfil
    • http://www.as-comitan.com
Re: MODIFICAR BASE DE DATOS
« Respuesta #6 en: Miércoles 11 de Marzo de 2009, 17:23 »
0
Hola migo grax por tu respuesta peor lo que encesito no es identificar si es mayuscula o minuscula lo que necesito es indiferenciar esto, que la palabra la reconosca este en mayusculas o minusculas o comvinadas (mayusculas y minusculas).

Y ver la forma en que se pueda sombrear la fila de un producto encontrado en una base de datos usando el DBGRID.
saludos :good:

gonzalipto

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: MODIFICAR BASE DE DATOS
« Respuesta #7 en: Miércoles 11 de Marzo de 2009, 18:29 »
0
Proba esta funcion, pone un TEdit y un TButton..

Modificala a tus necesidades... espero que te sirva..

AnsiString TForm1::analizarpalabra(AnsiString palabra)
{
  AnsiString caso;

  bool minuscula=true;

  for(int i=1; i<palabra.Length()+1; i++)
  {
     if(!islower(palabra))
     minuscula=false;
  }
  //si al terminar el ciclo minuscula es true la palabra esta toda en minuscula
  if(minuscula==true)
  caso="minuscula";

  //si es falso puede ser toda mayuscula o combinada..


  else
  {

    bool mayuscula=true;

    for(int i=1; i<palabra.Length()+1; i++)
    {
    if(!isupper(palabra))
     mayuscula=false;
    }
    if(mayuscula==true)
    caso="mayuscula";
    else
    caso="combinada";

}

return caso;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text=analizarpalabra(Edit1->Text);
}

alfaman

  • Miembro activo
  • **
  • Mensajes: 32
  • Nacionalidad: mx
    • Ver Perfil
    • http://www.as-comitan.com
Re: MODIFICAR BASE DE DATOS
« Respuesta #8 en: Sábado 14 de Marzo de 2009, 03:45 »
0
Hola ya he logrado solucionar estas dos ultimas dudas sobre el uso de el DBGrid

Para que se sombree la fila completa del articulo o registro encontrado, solo hay que modificar unas opciones del DBGrid

seleccionamos el DBGrid y en la barra de Objet Inspector (Opciones del objeto), bamos a donde dice OPTIONS y desplegamos ese submenu y cambiamos a  TRUE las siguientes opciones

dgRowSelect                    //--->> Seleccionar filas completas, en vez de celdas
dgAlwaysShowSelection   //--->>Dejar siempre visible la selección

Ahora para hacer que la busqueda indiferencie las letras entre mayusculas o minusculas use el siguiente codigo

Código: C++
  1. TLocateOptions Opts; // Se crea una variable de tipo TLocateOptions
  2. Opts << loCaseInsensitive;  //se le indica a la variable creada indiferencie entre minusculas y mayusculas
  3.  
  4. Table1->Locate("PRODUCTOS",bus->Text,Opts) ; //Agregamos la variable en la busqueda y listo.
  5. {
  6.  
  7. Beep();
  8. }
  9.  


Asi es como he logrado resolver estas dudas, les agardesco la ayuda de todos que se tomaron el tiempo responder a mi post

Les dejo un ZIP del programita donde se incluyen las soluciones de las dudas que tuve.

http://www.as-comitan.com/Muestra.zip

Saludos  :D