Programación General > C++ Builder
MODIFICAR BASE DE DATOS
alfaman:
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:
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++ --- void __fastcall TFter::BitBtn1Click(TObject *Sender){ Tter->Open();//abro la tabla Tter->Append();//aca le digo que voy a insertar Fagrter->ShowModal();//llamo a la forma donde voy a insertar}
en Editar
--- Código: C++ --- void __fastcall TFter::BitBtn2Click(TObject *Sender){ Tter->Open();//abro la tabla Tter->Edit(); //Le digo que voy a editar Fagrter->ShowModal();//llamo la forma}
en la forma de insercion
al darle Ok en el boton le doy el siguiente codigo
--- Código: C++ --- void __fastcall TFagrter::BitBtn1Click(TObject *Sender){ if(Fter->Tter->State==dsInsert)//pregunto si es insercion { Fter->Tter->Post();//grabo informacion Fter->Tter->Next(); } if(Fter->Tter->State==dsEdit)//pregunto si es edicion { if(Application->MessageBox("Desea Guardar los cambios","Advertencia",MB_YESNO)==IDYES) Fter->Tter->Post();//grabo informacion else Fter->Tter->CancelUpdates(); }}
espero que eso sea util..
tauego.........
alfaman:
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:
: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++ --- void __fastcall TFter::BitBtn4Click(TObject *Sender){ AnsiString SQL="idtercero <> '' "; if(idtercero->Text != "") SQL=SQL+"and idtercero= '"+idtercero->Text.Trim()+"'";//ingreso mas valores a la cadena if(Edit1->Text.Trim()!="") SQL=SQL+"and nombres like '"+Edit1->Text.Trim()+"%'"; Tter->Filtered=false;//desactivo filtro Tter->Filter=SQL; //iguala la sentencia a ejecutar al filtro de la TTable Tter->Filtered=true;// activo el filtro}
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..................
alfaman:
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.
Navegación
[#] Página Siguiente
Ir a la versión completa