Potíže s metodou Delete objektu

Toto je hlavní technické fórum pro diskusi o problémech při vytváření PROMOTIC aplikací a jejich řešení.

Potíže s metodou Delete objektu

Postby tevas » Mon 30. Oct 2017 2:05:58

Dobrý den,
potýkám se s problémem funkčnosti metody Delete objektu AdoRecordset pro editaci sešitu v MS Excelu ve svém projektu v Promoticu 8.3.22 (OS Windows 7 Pro 32bit/64bit). Byl jsem už tak zoufalý, že jsem si otevřel projekt AppExamples a provedl jedinou změnu v příkazu v následující metodě tak, aby se zapisovalo pomocí "SaveRows" (b = oDb.Methods.DtiOper...). Po stisku příslušného tlačítka v odpovídajícím panelu (Panel2) v běžící aplikaci pak dojde k jejímu zamrznutí. Toto chování jsem pozoroval zatím na dvou svých PC. Můžete prosím ověřit to, zda se jedná o lokální chybu na mém PC? Děkuji.

PmRoot > Examples > Database > Excel > Panel2: metoda WriteToExcel
Code: Select all
Dim oDb, b

Set oDb = pMe.Pm("../PmAdo")

oDb.Methods.DtiOper list, "Open", "Empty", "Empty", "Empty"
b = oDb.Methods.DtiOper(list, "SaveRows", "Empty", aData, "Empty")
oDb.Methods.DtiOper list, "Close", "Empty", "Empty", "Empty"

pResult = b

Jaroslav Bušek
tevas
 
Posts: 15
Joined: Wed 20. Aug 2014 18:56:18

Re: Potíže s metodou Delete objektu

Postby tevas » Thu 02. Nov 2017 20:56:06

Předpokládám, že odpověď lze nalézt zde: https://support.microsoft.com/en-sg/help/257819/how-to-use-ado-with-excel-data-from-visual-basic-or-vba.
You are more restricted in deleting Excel data than data from a relational data source. In a relational database, "row" has no meaning or existence apart from "record"; in an Excel worksheet, this is not true. You can delete values in fields (cells). However, you cannot:
1. Delete an entire record at once or you receive the following error message:
Deleting data in a linked table is not supported by this ISAM.
You can only delete a record by blanking out the contents of each individual field.

Předkonfigurace a její metoda DtiOper pro MS Excel pak tedy nefunguje pro všechny dostupné parametry.

Jaroslav Bušek
tevas
 
Posts: 15
Joined: Wed 20. Aug 2014 18:56:18

Re: Potíže s metodou Delete objektu

Postby Pavel Klimíček » Mon 06. Nov 2017 10:12:41

Odstranit řádek záznamu v Excelu pomocí ADO metodou Delete bohužel nejde. Viz Výše:
Upravil jsem ale položku "SaveRows" v metodě DtiOper objektu PmAdo takto:
Code: Select all
Set oRs = pMe.RsGet(sRsId)
If oRs Is Nothing Then pResult = false : Exit Function
  oRs.MoveFirst
  nCol = oRs.fields.Count -1
  Do Until oRs.EOF
    For i = 0 To nCol
      oRs.Fields(i).Value = Empty
    Next
    oRs.MoveNext
  Loop
  oRs.Update
   
  ReDim aRowValues(nCol)
  oRs.MoveFirst
  For j = 0 To UBound(vPar2, 2)
    If j > 0 Then
      oRs.AddNew
    End If
    For i = 0 To UBound(vPar2, 1)
      aRowValues(i) = vPar2(i, j)
    Next
    pMe.Methods.ImplSetRowValues oRs, aRowValues
    oRs.Update
  Next
  If oRs.Pm_LastErr = 0 Then
    pResult = true
  Else
    oRs.CancelUpdate
    pResult = false
  End If

Teď by měla "SaveRows" dělat to co se od ní očekává.
Pavel Klimíček
 
Posts: 73
Joined: Thu 13. Dec 2012 15:35:59


Return to Nevím jak...

Who is online

Users browsing this forum: No registered users and 6 guests