| ID | Asunto | Fecha | Nick | |
| 40424 | Datagrid columna calculada | 15/04/08 18:31 | Lestat2492 | |  |
Buenas Tardes mi roblema es el siguiente :
Tengo datagrid el cual lleno con un recodset que abro con una consulta sql; los datos que muestro son codigo de articulo, orden de compra, fecha de recepcion, tipo de moneda y monto, … necesitaria saber como hacer para que en el datagrid me agregue una nueva columna con nombre monto_$ (monto en pesos) y a los montos que estan en dólar lo transforme en pesos según la cotizacion dólar que la ingreso en un texbox
Dejo parte del codigo para que me den una mano Muchas Gracias.
Private Sub Command1_Click() Dim fecini As Date Dim fecfin As Date Dim dolar As Currency fecini = DTPicker1.Value fecfin = DTPicker2.Value If Text1.Text = "" Then MsgBox "Pone la cotización Boludo", vbCritical, "Y el Dolar donde ta?" Exit Sub End If dolar = Text1.Text Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=VISUAL01;Data Source=VM_SERVER" cn.Open cn.CursorLocation = adUseClient rs.Open "SELECT PURCHASE_ORDER.VENDOR_ID, VENDOR.NAME, PURCHASE_ORDER.ID, PURC_ORDER_LINE.PART_ID, PURC_ORDER_LINE.ORDER_QTY, RECEIVER_LINE.RECEIVED_QTY, PURC_ORDER_LINE.UNIT_PRICE, PURCHASE_ORDER.CURRENCY_ID, RECEIVER.RECEIVED_DATE " & _ "FROM (RECEIVER_LINE INNER JOIN ((PURCHASE_ORDER INNER JOIN PURC_ORDER_LINE ON PURCHASE_ORDER.ID = PURC_ORDER_LINE.PURC_ORDER_ID) INNER JOIN VENDOR ON PURCHASE_ORDER.VENDOR_ID = VENDOR.ID) ON " & _ "(RECEIVER_LINE.PURC_ORDER_LINE_NO = PURC_ORDER_LINE.LINE_NO) AND (RECEIVER_LINE.PURC_ORDER_ID = PURC_ORDER_LINE.PURC_ORDER_ID)) INNER JOIN RECEIVER ON RECEIVER_LINE.RECEIVER_ID = RECEIVER.ID " & _ "WHERE (((RECEIVER.RECEIVED_DATE) Between '" & Format(fecini, "mm/dd/yyyy") & "' And '" & Format(fecfin, "mm/dd/yyyy") & "'))", cn, adOpenDynamic, adLockOptimistic Set DataGrid1.DataSource = rs End Sub |
|
| ID | Asunto | Fecha | Nick | |
| 40442 | Re: Datagrid columna calculada (Resp: 40424) | 16/04/08 07:58 | Naiet | | |
Una forma sencilla se hacerlo puede ser incorporando esa columna calculada en la sentencia SQL.
"SELECT PURCHASE_ORDER.VENDOR_ID, ... , (UnitPrice * " & TuOperandoDeConversion & ") As Monto_$ FRom ..."
En la columna Monto_$ Tendrás el precio unitario por el valor que te hace la conversión, o si tienes que usar la división pues lo cambias. Sólo tienes que tener cuidado con que el OperandoDeConversion que metas en la cunsulta use como separador decimal el punto y no la coma.
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 40448 | Re: Datagrid columna calculada (Resp: 40442) | 16/04/08 10:14 | Lestat2492 | | |
El problema es que en la tabla no todos los montos estan en dolares algunas ya estan en pesos, por lo tanto la consulta no me sirve, necesito de alguna manera poder recorrer el datagrid y mediante un if... poder consultar por el tipo de moneda para aplicar el tipo de cambio....
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 40449 | Re: Datagrid columna calculada (Resp: 40448) | 16/04/08 10:55 | Naiet | | |
Recorrer el dataLa verdad es que nunca usé el datagrid, siempre usé el TrueDBGrid, en este se configura la columna como ubound y luego hay un evento que se dispara cada vez que se rellena una fila, en el que se puede hacer...
Pero también puedes usar en tu consulta un iif, si es Access o un case si es sql server
"SElect ... , iif (Tipomoneda = 1, Precio * " & Conversion & ", Precio) AS Monto_$ from ...."
"SElect ... , case Tipomoneda When 1 Then Precio * " & Conversion & " else Precio End) AS Monto_$ from ...."
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 40454 | Re: Datagrid columna calculada (Resp: 40449) | 16/04/08 12:33 | Lestat2492 | | |
Probe con la sentencia en SQL pero me arroja un error que no puedo detectar me podrias ayudar con la consulta .... el error vb6 me lo marca cerca de la clausula FROM... deja la consulta LO DE LAS COMILLAS Y & ES PARA PODER SEGUIR EN OTRA LINEA CON VB... Gracias de antemano
rs.Open " SELECT PURCHASE_ORDER.VENDOR_ID, VENDOR.NAME, PURCHASE_ORDER.ID, PURC_ORDER_LINE.PART_ID, PURC_ORDER_LINE.ORDER_QTY, RECEIVER_LINE.RECEIVED_QTY, PURC_ORDER_LINE.UNIT_PRICE, PURCHASE_ORDER.CURRENCY_ID, RECEIVER.RECEIVED_DATE, " & _ " 'Monto_$' = case PURCHASE_ORDER.CURRENCY_ID when 'U$S' then (PURC_ORDER_LINE.UNIT_PRICE * '" & dolar & "') else PURC_ORDER_LINE.UNIT_PRICE " & _ " FROM (RECEIVER_LINE INNER JOIN ((PURCHASE_ORDER INNER JOIN PURC_ORDER_LINE ON PURCHASE_ORDER.ID = PURC_ORDER_LINE.PURC_ORDER_ID) INNER JOIN VENDOR ON PURCHASE_ORDER.VENDOR_ID = VENDOR.ID) ON " & _ " (RECEIVER_LINE.PURC_ORDER_LINE_NO = PURC_ORDER_LINE.LINE_NO) AND (RECEIVER_LINE.PURC_ORDER_ID = PURC_ORDER_LINE.PURC_ORDER_ID)) INNER JOIN RECEIVER ON RECEIVER_LINE.RECEIVER_ID = RECEIVER.ID " & _ " WHERE (((RECEIVER.RECEIVED_DATE) Between '" & Format(fecini, "mm/dd/yyyy") & "' And '" & Format(fecfin, "mm/dd/yyyy") & "'))", cn, adOpenDynamic, adLockOptimistic
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 40455 | Re: Datagrid columna calculada (Resp: 40454) | 16/04/08 12:48 | Naiet | | |
así a bote pronto te falta el END de la sentencia CASE
" 'Monto_$' = case PURCHASE_ORDER.CURRENCY_ID when 'U$S' then (PURC_ORDER_LINE.UNIT_PRICE * '" & dolar & "') else PURC_ORDER_LINE.UNIT_PRICE END " & _
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 40456 | Re: Datagrid columna calculada (Resp: 40455) | 16/04/08 13:20 | Lestat2492 | |  |
Muchisimas Gracias me salvaste!!!!!
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |